Не удалось обработать ошибку executeFetchRequest - PullRequest
1 голос
/ 01 марта 2012

Мой запрос на выборку работает нормально, и я получаю свои выбранные объекты без каких-либо проблем.Что я хочу сделать, это обработать ошибку в случае, если сущность не существует.Проблема в том, что я не могу обработать ошибку, потому что приложение вылетает, когда я вызываю executeFetechRequest: error: без каких-либо предупреждений.

Моя выборка выглядит так:

NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Info" inManagedObjectContext:context];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"infoID" ascending:YES]];
[request setReturnsObjectsAsFaults:NO];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"infoID like %@",[a substringFromIndex:13]];
request.predicate = predicate;
request.fetchBatchSize = 1;

NSError *error = nil;

NSArray *results = [context executeFetchRequest:request error:&error];

if (error == nil) {
    ...
}
else {
    //handle error
}

Как я уже сказалнет никаких проблем, пока сущность существует, но я хочу обработать ошибку, если она не существует.Любая идея?Приветствия

1 Ответ

1 голос
/ 02 марта 2012

Вы можете спросить модель, существует ли такая сущность:

    NSArray *entities = managedObjectModel.entities;
    BOOL canExecute=NO;
    for(NSEntityDescription *ed in entities) {
       // check if entity name is equal to the one you are looking for
       if(found) {
          canExecute=YES;
          break;
       }
    }

   if(canExecute) {
     // execute your request and all the rest...
   } else {
     NSLog(@"Entity description not found");
   }

, если ее не существует, вы не выполните выборку

...