ios – 我不能在Swift项目的两个目标中使用我的核心数据模型

前端之家收集整理的这篇文章主要介绍了ios – 我不能在Swift项目的两个目标中使用我的核心数据模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
核心数据模型中实体模型的类名称必须包含应用程序名称.所以对于名为User的实体,模型编辑器中的类名必须是MyAppName.User.这样可以正常工作,直到我为我的项目添加了第二个目标.

新项目期望实体类名称为SecondAppTargetName.User.我们如何使用相同的核心数据模型来支持两个目标?我尝试使用${PRODUCT_NAME},而不是期望它能正常工作.它不行.

关于如何在目标之间分享一个核心数据模型的任何想法,并满足Swift项目需要在模型编辑器中将PRODUCT_NAME添加到该类中?

编辑:
Apple documentation here出现,将模块名称添加到模型实体检查器中的类名称的前缀是首选行为.如果这样,这似乎是一个空洞,因为它排除了使用相同数据模型的多个目标.我还没有找到解决方法. SO上的一些帖子已经表明,在托管对象的Swift类定义前面使用@objc(ClassName)会做到这一点,但是我还没有能够验证.

解决方法

事实证明,答案似乎是在 this StackOverflow answer中关于相关问题的Swift文件中的类定义之上添加了@objc(ClassName)伪指令.至少这是XCode 6 beta 5在这个阶段的答案.

所以对于一个名为User的实体类,你需要:

@objc(User)
class User: NSManagedObject {
    ...

我已经在两个目标项目中测试了这一点,并从模型实体检查器中删除了所有的前缀,它的工作原理.我想知道苹果为什么在文档中包含前缀要求,因为它使用相同的核心数据模型对多个目标进行约束.看来,@objc修复是正确的解决方案,也可能只是在这个beta阶段的临时解决方案.

猜你在找的iOS相关文章