使用 swift 3 和 Xcode 8 beta 子类化 NSManagedObject
Subclassing NSManagedObject with swift 3 and Xcode 8 beta
我已经开始尝试在 swift 3 和 Xcode 8 beta 中使用核心数据。当我尝试从核心数据模型生成 NSManagedObject 子类并在编辑器菜单中创建 NSManagedObject 子类...选项时,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___'
有没有人遇到同样的问题?这个新文件是什么意思?
谢谢
这可能是与新的自动子类生成的(测试版)冲突,可以在数据模型文件的实体检查器中控制。
来自documentation (What's New In Core Data)
Xcode automatic subclass generation
Xcode now supports automatic generation of NSManagedObject
subclasses
in the modeling tool. In the entity inspector:
- Manual/None is the default, and previous behavior; in this case you
should implement your own subclass or use
NSManagedObject
.
- Category/Extension generates a class extension in a file named like
ClassName+CoreDataGeneratedProperties
. You need to declare/implement
the main class (if in Obj-C, via a header the extension can import
named ClassName.h). -
- Class Definition generates subclass files named
like
ClassName+CoreDataClass
as well as the files generated for
Category/Extension.
The generated files are placed in DerivedData and
rebuilt on the first build after the model is saved. They are also
indexed by Xcode, so command-clicking on references and fast-opening
by filename works.
我在这个开发者测试版中遇到了类似的问题 Xcode 8。其中一些问题在我离开数据模型或生成 NSManagedObject 子类之前解决了 Command + S(保存更改)。我不知道为什么,但在我的情况下,自动保存有时不起作用,并且会出现一些错误。
我 运行 解决了上面引用的 .swift 文件的问题,发现注释掉 ___COREDATA... 行让我暂时遇到了错误。我不确定它应该完成什么。
我还发现 XCODE 8 倾向于忘记添加到 CoreData 实体的新字段,并反复将 CoreData 模型代码生成目标重置为 Objective C,从而导致重新生成文件时,会出现一连串的 .h 和 .m 文件,而不是 swift 文件。我看到的大多数问题都与 CoreData 相关,但到目前为止都是可行的。
除此之外,XCODE 8 在使用具有 25 个数据实体和 30 多个视图控制器的应用程序时出奇地稳定,所以我没有抱怨。
我已经开始尝试在 swift 3 和 Xcode 8 beta 中使用核心数据。当我尝试从核心数据模型生成 NSManagedObject 子类并在编辑器菜单中创建 NSManagedObject 子类...选项时,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___'
有没有人遇到同样的问题?这个新文件是什么意思?
谢谢
这可能是与新的自动子类生成的(测试版)冲突,可以在数据模型文件的实体检查器中控制。
来自documentation (What's New In Core Data)
Xcode automatic subclass generation
Xcode now supports automatic generation of
NSManagedObject
subclasses in the modeling tool. In the entity inspector:
- Manual/None is the default, and previous behavior; in this case you should implement your own subclass or use
NSManagedObject
.- Category/Extension generates a class extension in a file named like
ClassName+CoreDataGeneratedProperties
. You need to declare/implement the main class (if in Obj-C, via a header the extension can import named ClassName.h). -- Class Definition generates subclass files named like
ClassName+CoreDataClass
as well as the files generated for Category/Extension.The generated files are placed in DerivedData and rebuilt on the first build after the model is saved. They are also indexed by Xcode, so command-clicking on references and fast-opening by filename works.
我在这个开发者测试版中遇到了类似的问题 Xcode 8。其中一些问题在我离开数据模型或生成 NSManagedObject 子类之前解决了 Command + S(保存更改)。我不知道为什么,但在我的情况下,自动保存有时不起作用,并且会出现一些错误。
我 运行 解决了上面引用的 .swift 文件的问题,发现注释掉 ___COREDATA... 行让我暂时遇到了错误。我不确定它应该完成什么。
我还发现 XCODE 8 倾向于忘记添加到 CoreData 实体的新字段,并反复将 CoreData 模型代码生成目标重置为 Objective C,从而导致重新生成文件时,会出现一连串的 .h 和 .m 文件,而不是 swift 文件。我看到的大多数问题都与 CoreData 相关,但到目前为止都是可行的。
除此之外,XCODE 8 在使用具有 25 个数据实体和 30 多个视图控制器的应用程序时出奇地稳定,所以我没有抱怨。