如何在iOS 7和iOS 8中支持具有命名空间的Core Data?

3
我希望能够同时支持iOS 7和iOS 8。我是用Swift编写应用程序的。在设置Core Data时,我发现您必须在数据模型中为类命名空间。否则,该类将无法找到(即Target.Class vs Class)。这里要求一个命名空间有一些问题。一,这意味着您无法在不同的目标(包括测试目标)中使用数据模型;二,它在iOS 7的相反方向上出现了问题。iOS 7寻找Class,但数据模型现在有Target.Class。
有人知道在这种情况下支持iOS 7和iOS 8的适当方法吗?我遇到了其他名称空间引起问题的地方。
1个回答

3
将@objc标签添加到自定义类声明中,将使其移动到默认命名空间中。这个命名空间没有混淆,因此可从iOS 7和8中使用。

这并不意味着您需要在所有类上使用@objc来实现iOS 7兼容性,只有那些被字符串名称引用的类才需要,最可能是来自CoreData、Nib文件或使用NSCoding。 - David Berry
我理解这意味着"@objc class MyClass..."而不是"class MyClass...",但每次重新生成Core Data模型类时都会被覆盖。我是否在xcdatamodel中错过了此选项,以便在生成这些类时执行此操作? - Mike Cole
你是如何生成它们的? - David Berry
编辑器 -> 创建 NSManagedObject 子类...,然后选择我更新的文件。尽管现在似乎只有在删除之前的文件后才能工作。 - Mike Cole
是的,那只对一次性生成有用,特别是因为您失去了对生成代码所做任何自定义。您可能想看看mogenerator。我现在基本上不再使用core data而没有它。 - David Berry
今天我确实有别人也推荐了那个。明天我会去看看。我也会测试一下@objc的建议,如果符合预期,就会接受这个答案。 - Mike Cole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接