2015-01-31 7 views
1

Я использую 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

ответ

0

Вы должны убедиться, что все спасены и слита до выборки будет работать. Если вы используете MR, тогда лучше взять управляемый объект и вызвать inContext:, чтобы он передавал другой контекст и выполнял ли он работу (он также избегает предиката).

Я ожидаю, что авария связана с тем, что вы используете player.md5Id вместо self.playerMD5Id, так что вы получаете доступ к управляемому объекту в неправильной теме.

+0

если я хочу использовать 'MR_inContext:', где мне получить контекст для передачи в качестве аргумента? Я обновил свой вопрос простым фрагментом, который воспроизводит краш. – Jan

Смежные вопросы