核心数据:传递对象或对象ID更安全吗?

时间:2015-05-07 14:11:09

标签: ios objective-c core-data

我正在努力找出更安全/最佳做法。我有一个方法,它接受一个对象,获取一些数据,并将其保存到该对象。我应该传递该方法的对象还是只是对象ID,然后在方法中重新获取对象?是一个比另一个更好还是没有什么区别?

e.g。

- (void)getNameFromWebForPerson:(Person *)p {
    //start nsoperation
    operationComplete(NSString *name){
        p.name = name
        [p save];
    }
}

- (void)getNameFromWebForPerson:(ObjectID *)oid {
    //start nsoperation
    operationComplete(NSString *name){
        Person *p = [fetchObjectForID:oid];
        p.name = name
        [p save];
    }
}

1 个答案:

答案 0 :(得分:3)

这完全取决于您在save方法中运行的线程。应始终从同一线程/队列访问您为管理这些对象而创建的NSManagedObjectContext实例。如果您需要/想要使用多个队列来管理传递ObjectID的对象,并且像在第二个示例中那样进行查询,建议您使用。

请参阅NSManagedObject's section on Concurrency