当上下文为零时,Swift Temp CoreData对象无法设置ivars
问题描述:
我有一个CoreData对象,我想实例化(暂时使用),但我不想保存或插入上下文中进行持久化。当上下文为零时,Swift Temp CoreData对象无法设置ivars
我的,因为我想创建对象类的定义是这样的:
import Foundation
import CoreData
@objc(USubmission)
class USubmission: NSManagedObject {
@NSManaged var subid: NSNumber
我创建这样的对象(临时使用,但不坚持)
let entitiyDesc = NSEntityDescription()
entitiyDesc.name = "USubmission"
entitiyDesc.managedObjectClassName = "USubmission"
let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)
然而,当我设置其中一个临时对象的ivars我得到以下错误:
sub.subid = 0
错误:
[USubmission setSubid:]: unrecognized selector sent to instance
我检查了对象,它看起来像正确的对象而不是NSManagedObject对象。
为什么当上下文为零(临时对象)时与存在上下文时会出现此错误?
答
你必须从你的ManagedObjectContext创建一个实体描述:
let entitiyDesc = NSEntityDescription.entityForName("USubmission", inManagedObjectContext: **yourContext**)
如果你不想保存对象,这就是与实体创建的,不是通过零到insertIntoManagedObjectContext,像你已经做的那样:
let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)
+0
就是这样!只需要传入NSEntityDescription的有效上下文,并且它现在正在工作。谢谢你的帮助!! – Ranknoodle
正如@messeb在他的回答中指出的,问题源于实体描述。您从头开始创建它,它与您的模型中提供的定义截然不同(尽管它具有相同的名称和模型类)。在'entityForName:inManagedObjectContext:'类方法中指定一个上下文提供了一个指向模型的链接(context - > psc - > model)。 – pbasdf