我想向我的托管对象实体模型添加一个唯一 ID 字段。
我知道 Core Data 不使用 ID 关系,但这是不同的。我需要一种将线程安全数据传递给不同线程的方法,以便新线程可以从该数据中获取托管对象。
它可以是任何格式,但理想情况下只是单个对象/变量/值。
我可以将 CFUUID 作为 NSString 添加到对象中,但我不确定这是否理想?我应该做点别的吗?
欢迎任何替代方案,甚至只是确认 CFUUID 是可行的方法。
我想向我的托管对象实体模型添加一个唯一 ID 字段。
我知道 Core Data 不使用 ID 关系,但这是不同的。我需要一种将线程安全数据传递给不同线程的方法,以便新线程可以从该数据中获取托管对象。
它可以是任何格式,但理想情况下只是单个对象/变量/值。
我可以将 CFUUID 作为 NSString 添加到对象中,但我不确定这是否理想?我应该做点别的吗?
欢迎任何替代方案,甚至只是确认 CFUUID 是可行的方法。
正如@Carl Veazey 提到的那样:这NSManagedObjectID
正是您要寻找的!
这是一个简短的片段:
NSManagedObject *objectInMainContext = ....;
NSManagedObjectID *objectID = objectInMainContext.objectID;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSManagedObjectContext *newThreadContext = [[NSManagedObjectContext alloc] initWithConcurrencyType: ... ];
[newThreadContext objectWithID: objectID];
....
....
});