当上下文为nil

时间:2016-05-14 06:12:07

标签: ios swift core-data

我有一个我希望实例化的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:]:无法识别的选择器发送到实例

我检查了对象,它看起来像是正确的对象,而不是NSManagedObject对象。

为什么在上下文为nil(临时对象)时与上下文有关时会出现此错误?

1 个答案:

答案 0 :(得分:2)

您必须从ManagedObjectContext创建实体描述:

let entitiyDesc = NSEntityDescription.entityForName("USubmission", inManagedObjectContext: **yourContext**)

如果您不想保存使用该实体创建的对象,请将 nil 传递给 insertIntoManagedObjectContext ,就像您已经这样做:

let sub = USubmission.init(entity: entitiyDesc, insertIntoManagedObjectContext: nil)