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

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

概述核心数据模型中实体模型的类名称必须包含应用程序名称.所以对于名为User的实体,模型编辑器中的类名必须是MyAppName.User.这样可以正常工作,直到我为我的项目添加了第二个目标. 新项目期望实体类名称为SecondAppTargetName.User.我们如何使用相同的核心数据模型来支持两个目标?我尝试使用${PRODUCT_NAME},而不是期望它能正常工作.它不行. 关于如何在目标之间 核心数据模型中实体模型的类名称必须包含应用程序名称.所以对于名为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 – 我不能在Swift项目的两个目标中使用我的核心数据模型全部内容,希望文章能够帮你解决ios – 我不能在Swift项目的两个目标中使用我的核心数据模型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1113598.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存