Я написал метод выборки обычным способом:
-(FXPCallLog *)getCallLogWithID:(NSString *)logID{
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:[[FXPCallLog class] description]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"logID = %@", logID];
[request setPredicate:predicate];
NSError *err = nil;
NSArray *result = [self.moc executeFetchRequest:request error:&err];
if (!err && result && result.count > 0){
FXPCallLog *foundLog = (FXPCallLog *)[result firstObject];
return foundLog;
}
return nil;
}
И он отлично работает.
Но когда я изменяю результат на:
NSArray *result = [[NSArray alloc] init];
@try {
result = [NSArray arrayWithArray:[self.moc executeFetchRequest:request error:&err]];
} @catch (NSException *exception) {
NSLog(@"deadlock :/");
} @finally {
return nil;
}
Этополучаю неправильный результат!
Я не могу понять, в чем разница между этими двумя.
Почему они разные?
Кроме того
Я добавил try-catch для обработки тупиковой ситуации.
Буду благодарен за любые советы и предложения.