【问题标题】:Swift Core Data: auto-generating managed object subclass makes the class name to PRODUCT_MODULE_NAME.entityName in modelSwift Core Data:自动生成托管对象子类使类名在模型中为 PRODUCT_MODULE_NAME.entityName
【发布时间】:2015-04-11 02:58:23
【问题描述】:

我正在制作一个纯 Swift 项目,当我在模型文件中创建实体时,然后使用 Editor->Create NSManagedObject Subclass 为实体创建类文件,在模型中,实体的 Class 属性变为 PRODUCT_MODULE_NAME.entityName ,这将导致核心数据无法加载 NSManagedObject 子类实例。

我知道如何通过使用@objc() 并重命名模型文件中的类属性,但有什么更好的办法吗?

【问题讨论】:

  • 感觉Xcode中的“Create NSManagedObject Subclass ...”还是坏掉了...应该是${PRODUCT_MODULE_NAME}.entityName,应该自动展开。这行得通吗?
  • 我认为您不需要 @objc() 在模型文件中更改名称 - 我认为这是其中之一。 Swift 命名空间的根本问题 - 要么将实体转换为目标 C,要么在其名称前加上模块名称。

标签: swift core-data


【解决方案1】:

两种选择:

  1. PRODUCT_MODULE_NAME 替换为此构建设置的值。默认情况下,它将与您的TARGET_NAME 相同。 Class 字段中的完整值应类似于MyApp.entityName

  2. 在 Class 字段中仅使用 entityName 并在您的 swift 类前面加上 @objc(entityName)

数据模型中的 representedClassName 字段似乎是在运行时评估的,因此它需要一个文字值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多