我试图在我的应用程序和扩展中使用相同的核心数据模型,但我不确定如何在两者之间共享核心数据模型。核心数据模型的类使用带有类名的命名空间,所以当我尝试获取扩展中的对象时,出现无法加载名为“”的类的错误。
CoreData: warning: Unable to load class named 'Dali.Alarm' for entity 'Alarm'. Class not found, using default NSManagedObject instead.
有没有办法不在类名中使用命名空间,或者有没有办法让扩展继承主项目的命名空间?
最佳答案
我早些时候被困在这个问题上。似乎是一个真正的问题,将它作为功能请求/错误提交给 Apple 也没什么坏处。
与此同时,您可以通过两个步骤绕过它。首先,使用 @objc(ClassName)
标记您的 NSManagedObject 子类。只需将其插入类声明上方:
@objc(ClassName)
class ClassName: NSManagedObjectSubclass {
@NSManaged var name : String
}
其次,返回托管对象模型,并从您正在使用的实体的检查器的“类”名称字段中删除命名空间。
今天这对我有用,在读完这篇文章后:I can't use my core data model in two targets in a Swift project
关于core-data - Swift - 在应用程序组中共享核心数据模型(带扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443068/