我有Task和Person类。任务与Person一对一关系,这种关系称为"受让人"。我有两个类的NSManagedObject继承者。我正在获取Person的实例(借助NSFetchRequest),然后我创建了新的Task(使用NSEntityDescription),并且
task.assignee = person;
[context save:&error];
有时它可以节省,但大部分时间我都会收到“可可错误1570”这样的话说"受让人"是空的!
怎么可能?
最有趣的事情:当我检查"可选"在我的关系中,它的作用! 它可以保存正确的数据:与人交往。
这是一个错误还是什么?
答案 0 :(得分:0)
看起来我做了一个愚蠢的线程错误。
我有NSPrivateQueueConcurrencyType
的上下文,并使用从主线程获取的对象,这是不允许的(托管对象不是线程安全的)。我应该切换到NSMainQueueConcurrencyType
或使用managedObjectID
从不同的上下文(在正确的线程上)重新获取对象。