2017-06-06 68 views
10

撷取的指标根据发行说明的CoreData模型时,Xcode 9增加了对获取的指标:的iOS:无法编译,因为在Xcode 9

“的数据模型编辑器提出了核心数据的统一接口 新提取索引功能以及现有属性索引和 实体复合索引功能。旧数据模型被翻译为 获取索引表单进行编辑,并在需要 时保存为旧文件格式。使用部署编译数据模型目标低于 iOS 11,watchOS 4,macOS 10.13或tvOS 11继续生成 兼容编译形式。 (30843153)”

我的项目有部署目标的时刻设置到iOS 9但我不能编译我的CoreData模型,它给了我为有一个复合索引集的每个实体以下错误:

Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression requires a concrete result type. 
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression attributes are not compatible with the current deployment target. 
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression requires a concrete result type. 
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression attributes are not compatible with the current deployment target. 
Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires iOS deployment target 11.0 or later 
Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires Xcode 9.0 tools or later 

任何想法如何解决生成错误

UPDATE

的Xcode 9正确地转换复合索引到取对于除了那些从关系创建的所有案件的索引,因为“已知问题”一节中指出:

的数据模型编辑器仅支持创建取从属性和表现指标在这个测试版,而不是从关系。 (32407895)

受影响的获取指标看起来是这样,唯一的属性可以从下拉菜单中选择:

enter image description here

然而,在文档中的描述没有解决方法。

回答

0

此被固定在Xcode 9的β2,根据release notes

Xcode的数据模型编辑器支持创建从 属性,表达式,和关系提取索引。 (32407895)

+1

我在Xcode 9.0 Beta 3中收到此错误 – dmclean

+1

我在Xcode beta 5或6中转换了我的项目,对于我的iOS 10目标而言,这很好,但我的SiriKit扩展只是iOS 11 - 不是。它告诉我一个索引是重复的,但我找不到任何重复。一旦找到解决方案,我会在这里发布答案。 – AlexK

0

我已经提交了一个与苹果公司的错误 - 因为似乎没有一个很好的修复。目前,我已将“工具版本”从Automatic/Xcode 9更改为Xcode 8.这解决了我的问题,直到bug修复。

也有可能某些模型与新索引不兼容。就我而言,它是与其他类型有关系的子类模型(即从抽象类)。例如:

PIFolder 
| 
|-----PIFolderProject -> index: defaultItem (task relationship) 
|-----PIFolderNotebook-> index: defaultItem (note relationship) 
+0

我现在在Xcode 9的发布中遇到了这个问题。您如何将“工具版本”更改为Xcode 8? – Molanda

+0

点击模型。打开右侧的实用程序面板。显示文件检查器(几乎总是实用程序面板左侧的小型标签)。文档应该有一个属性,它可以打开什么或版本。 – AlexK

1

我刚刚在Xcode 9 GM中遇到了这个问题。我观察到的是,在索引编辑器中取消选中Ascending复选框会导致发生此错误(它在我创建新索引后才显示)。我假设调整这个索引属性只在iOS 11提取索引中被支持(你会注意到你在Xcode 9之前所做的任何索引默认都是按升序列出的)。

TL; DR:确保在提取索引编辑器中为Ascending复选框检查了所有属性。