我正在使用[MagicalRecord saveWithBlock: completion:]
方法,但我不确定如何访问完成块上保存的对象。我的代码如下
NSLog(@"saving player");
__block PSPlayer *player;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
// parse json
player = [self parsePlayer:playerInfoJson inContext:localContext];
NSLog(@"player.md5Id %@", player.md5Id);
} completion:^(BOOL success, NSError *error) {
NSLog(@"player.md5Id in success %@ error %@", player.md5Id, error);
...
}];
player.md5Id
在保存块的末尾正确设置,但在完成1中为零。这是正确的用法吗?
欢呼声, 扬
答案 0 :(得分:0)
完成块在设置之前捕获player
引用,以便在执行该块时它将为nil。
如果您想稍后使用新的托管对象,则应将其存储在属性中,然后从完成块调用方法(可能切换到主线程,不确定MR是否为您执行此操作)以查找主要背景下的对象。
或者我认为您可以提前定义完成块,然后将copy
传递给该方法,然后该副本可以访问更新的player
引用(我不经常这样做)真的,但IIRC它应该工作)。