【问题标题】:Subclassing NSManagedObject with swift 3 and Xcode 8 beta使用 swift 3 和 Xcode 8 beta 子类化 NSManagedObject
【发布时间】:2016-10-20 16:50:33
【问题描述】:

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

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___

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

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

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

谢谢

【问题讨论】:

  • 我无法在 Xcode 8 beta 中创建自定义 NSManagedObject 子类。我也有同样的问题。
  • 我通过以下方式修复了 objc 的几乎问题:stackoverflow.com/a/40788081/2246798

标签: core-data nsmanagedobject swift3 xcode8


【解决方案1】:

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

来自documentation (What's New In Core Data)

Xcode 自动子类生成

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

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

生成的文件放在 DerivedData 和 保存模型后在第一次构建时重建。他们也是 由 Xcode 索引,因此命令单击引用并快速打开 按文件名工作。

【讨论】:

  • 谢谢。在等待 Xcode 8 的新版本时,我将尝试使用这三个选项。
  • 注意:您也可以在文件检查器中选择可待因的语言,如果您想在 Swift 中生成代码。出于某种原因,尽管我创建了一个 Swift 项目,但我的目标是 C……再说一次,这是 GM 项目迁移的测试版。
  • 什么是实体检查员? -找到答案:它是您编辑实体的位置,即 .xcdatamodel 文件
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      相关资源
      最近更新 更多