gpt4 book ai didi

iphone - 正确使用MagicalRecord保存在BG中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:20 24 4
gpt4 key购买 nike

我见过两种不同的方法,我想知道哪种方法是正确的。

具体来说,我说的是在 BG 线程上访问 ManagedObject

我见过的方法是...

Person *person = ...
[MagicalRecord saveUsingBlock:^(NSManagedObjectContext *localContext) {
Person *localPerson = [person inContext:localContext];
// do stuff...
}]

但是我也看到了...

Person *person = ...
NSManagedObjectID *objectID = person.objectID;
[MagicalRecord saveUsingBlock:^(NSManagedObjectContext *localContext) {
Person *localPerson = (Person*)[localContext objectWithID:objectID];
// do stuff...
}]

后者似乎更正确,因为您没有尝试跨线程访问对象。但是看到两者后,我不确定 MagicalRecord 是否做了一些神奇的事情来解决这个问题?

最佳答案

inContext:MR_inContext: 的 Magical Record“简写”,实现为

- (id) MR_inContext:(NSManagedObjectContext *)otherContext
{
NSError *error = nil;
NSManagedObject *inContext = [otherContext existingObjectWithID:[self objectID] error:&error];
[MagicalRecord handleErrors:error];

return inContext;
}

(参见 https://github.com/magicalpanda/MagicalRecord/blob/master/MagicalRecord/Categories/NSManagedObject/NSManagedObject%2BMagicalRecord.m)。

所以两者都是跨不同上下文访问对象的有效方法,一个使用 existingObjectWithID,另一个使用 objectWithID。对于它们之间的细微差别,请参阅文档或例如What's the difference between -existingObjectWithID:error: and –objectWithID:? .

关于iphone - 正确使用MagicalRecord保存在BG中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15339838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com