我有一个 CoreData 对象,我想实例化(临时使用)但我不想保存或插入到上下文中以实现持久性。
我想创建的对象的类定义是这样的:
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 对象。
为什么当上下文为 nil(临时对象)而不是存在上下文时会出现此错误?
最佳答案
您必须从您的 ManagedObjectContext 创建一个实体描述:
let entitiyDesc = NSEntityDescription.entityForName("USubmission", inManagedObjectContext: **yourContext**)
如果您不想保存使用实体创建的对象,那么将 nil 传递给 insertIntoManagedObjectContext,就像您已经这样做的那样:
let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)
关于ios - 当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223307/