【发布时间】:2014-10-04 05:11:30
【问题描述】:
Core Data 模型中实体模型的类名必须在其前面加上应用程序名称。因此,对于名为 User 的实体,模型编辑器中的类名必须是 MyAppName.User。在我向项目中添加第二个目标之前,这一切正常。
新项目期望实体类名称为 SecondAppTargetName.User。我们如何使用相同的核心数据模型支持两个目标?我尝试在 ${PRODUCT_NAME}.User 前面添加,而不是期望它会起作用。而且它不起作用。
关于如何在目标之间共享一个核心数据模型并满足 Swift 项目将 PRODUCT_NAME 附加到模型编辑器中的类的需要的任何想法?
编辑: 从Apple documentation here 看来,将模块名称作为前缀添加到模型实体检查器中的类名称是首选行为。如果是这样,这似乎是一个巨大的漏洞,因为它排除了使用相同数据模型的多个目标。我仍然没有找到解决方法。 SO 上的一些帖子表明,在托管对象的 Swift 类定义前面使用 @objc(ClassName) 可以解决问题,但我还无法验证这一点。
【问题讨论】:
-
您是否尝试过从类名中省略应用程序名?我的核心数据类前面没有应用程序名,它工作正常。事实上,我无法让它与应用程序名称一起使用!我的应用程序名称包含一个空格,我尝试了所有可能的组合以在类前面加上应用程序名称,但无济于事。没有 appname 我没有问题。
-
是的,我删除了应用程序名称,因为我看到了一些没有它的示例项目。它行不通。我不确定是不是因为我使用了 RestKit,但我看过其他帖子,用户提到他们必须在产品名称前面加上。
-
在什么方面不起作用? RestKit 应该没有影响。为什么需要在项目名称前面加上(期望的)?你不能在前面加上一些其他的文字吗?
-
显然这里的解决方案是在您的应用名称中添加一个空格,那么它不是必需的! ;]
-
我不知道为什么我必须在名字前面加上。如果没有它,我会在 RestKit 设置实体对象映射时出错。对于大多数 Core Data 项目,您不会使用它。我看过其他 Swift Core Data 教程,其中提到需要该产品名称,这就是我开始使用它的原因。
标签: ios core-data swift restkit