【发布时间】:2016-02-11 02:24:32
【问题描述】:
我有一个继承自 NSManagedObject 的类。我将这个对象用于模型数据并且它也被持久化了。
class Foo: NSManagedObject {
@NSManaged var firstVar: String
@NSManaged var secondVar: String
let entity = NSEntityDescription.entityForName("Foo", inManagedObjectContext: managedObjectContext)
let createdManagedObject = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedObjectContext) as? Foo
}
我可以创建对象并获取NSManagedObject 实例,但我不能将其转换为实际类。
实际上,如果我将其向下转换为可选值,那么我将得到 nil 值,如果我通过展开向下转换,那么它将崩溃。
当使用 nil 值进行向下转换时,调试器检查器显示类型:Module.Foo,我认为这是问题的根源。
当然,我尝试在 .xcmodel 检查器中命名类,尝试将 Entity 命名为 Module.Foo,但从 Xcode 7 开始不允许使用后者反正更多。
齐心协力:没有成功。现在我必须通过KV访问Foo对象,这有点尴尬。
有人解决了这个问题吗?
编辑:添加代码以显示创建和向下转换。我遇到了 Xcode 7.0 的问题,现在和 7.1.1 一样
【问题讨论】:
-
您能说明一下您是如何获取它的以及您是如何向下转换它的吗?
-
您尝试过stackoverflow.com/questions/25076276/… 和stackoverflow.com/questions/26613971/… 中的各种解决方案吗?这是否发生在您的主程序或单元测试或框架中?
-
我实际上正在处理一个包含核心数据的项目,并且我没有任何问题:
self.entry = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: managedObjectContext) as? Foo。你能发布更多细节吗? -
@mad_manny,完成。这非常简单。
-
@MartinR,所有这些可能性都经过了测试。有或没有模块,它发生在主程序和测试中。
标签: swift core-data nsmanagedobject downcast