Я использую Magical Record 2.3.0 beta 5, и у меня возникают проблемы с пониманием того, как получить мой NSManagedObject
s для текущей темы. Я долго бегу NSOperation
, где мне нужен мой PSPlayer
(NSManagedObject
).Магический объект записи для текущей темы
Когда я запускаю NSOperation, я сохраняю идентификатор своего PSPlayer
и повторно выбираю тот же объект в методе операции main
. Согласно to Apple, это способ сделать это.
@implementation TAPlayerUpdateOperation
- (instancetype)initWithPlayer:(PSPlayer *)player;
{
self = [super init];
if (self) {
self.playerMD5Id = player.md5Id;
}
}
- (void)main
{
@autoreleasepool {
__block BOOL keepUpdating = YES;
PSPlayer *player = [[PSPlayer MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"md5Id == %@", self.playerMD5Id]] firstObject];
NSLog(@"player.md5Id = %@", player.md5Id);
// rest of my operation logic
}
}
@end
Когда я запускаю мое приложение с -com.apple.CoreData.ConcurrencyDebug 1
, я получаю сбой при обращении к свойству в операторе NSLog.
Каков правильный способ получить мой NSManagedObject
так, чтобы он был безопасен для текущей темы?
Я приколол проблему до следующего фрагмента, где он также разбился.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PSPlayer *player =[[PSPlayer MR_findAll] firstObject];
NSLog(@"player = %@", player.name);
});
веселит, Jan
если я хочу использовать 'MR_inContext:', где мне получить контекст для передачи в качестве аргумента? Я обновил свой вопрос простым фрагментом, который воспроизводит краш. – Jan