19

我已经开始尝试在 swift 3 和 Xcode 8 beta 中使用 Core data。当我尝试从核心数据模型生成 NSManagedObject 子类并在 Editor 菜单中 Create NSManagedObject subclass... 选项时,Xcode 8 beta 生成三个文件,其中一个是_COREDATA_DATAMODELNAME_ +CoreDataModel.swift ,内容如下:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___

此外,该文件的内容显示了两个警告:

Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'

有没有人遇到过同样的问题?这个新文件的含义是什么?

谢谢

4

3 回答 3

44

这可能是与新的自动子类生成的(测试版)冲突,可以在数据模型文件的实体检查器中控制。

来自文档(核心数据中的新增功能)

Xcode 自动子类生成

NSManagedObjectXcode 现在支持在建模工具中自动生成子类。在实体检查器中:

  • Manual/None是默认的,也是以前的行为;在这种情况下,您应该实现自己的子类或使用NSManagedObject.
  • Category/Extension在名为 like 的文件中生成类扩展名 ClassName+CoreDataGeneratedProperties。您需要声明/实现主类(如果在 Obj-C 中,扩展可以通过头文件导入名为 ClassName.h)。-
  • 类定义生成名为 like 的子类文件ClassName+CoreDataClass以及为 Category/Extension 生成的文件。

生成的文件放置在 DerivedData 中,并在保存模型后的第一次构建时重新构建。它们也被 Xcode 索引,因此通过命令单击引用和按文件名快速打开是可行的。

于 2016-06-19T09:04:17.500 回答
0

我遇到了上面引用的 .swift 文件的问题,发现注释掉 ___COREDATA... 行现在让我遇到了错误。我不确定它应该完成什么。

我还发现 XCODE 8 倾向于忘记添加到 CoreData 实体的新字段,并反复将 CoreData 模型代码生成目标重置为 Objective C,从而导致大量 .h 和 .m 文件而不是 swift重新生成文件时的文件。我看到的大多数问题都与 CoreData 相关,但到目前为止都是可行的。

除此之外,XCODE 8 与一个拥有 25 个数据实体和超过 30 个视图控制器的应用程序一起工作的表现出奇的稳定,所以我没有抱怨。

于 2016-06-28T22:42:17.557 回答
0

我与这个开发人员测试版 Xcode 8 有类似的问题。其中一些在我离开数据模型或生成 NSManagedObject 子类之前解决了 Command + S(保存更改)。我不知道为什么,但在我的情况下,自动保存有时不起作用,并且会出现一些错误。

于 2016-06-28T07:39:19.733 回答