やあみんな、私はこの機能を持っています:
//retrieves checksum within core data store, returns 0 if a checksum has not been stored
-(double)getStoredChecksum {
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"DataFeedManager" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
//+for (NSManagedObject* item in fetchedObjects) //REMOVE
//+[[self managedObjectContext] deleteObject:item]; //REMOVE FOR CLEARING CHECKSUM CONTENTS
if ([fetchedObjects count] == 0){ //array is empty
NSLog(@"FETCHED OBJECTS IS EMPTY");
checksumStored = NO;
return 0;
}
if (fetchedObjects == nil) {
NSLog(@"Error while fetching\n%@",
([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
}
if ([fetchedObjects count] > 1)
NSLog(@"====BAD:Multiple Checksums Retrieved!!!!====");
checksumStored = YES;
double returnable = [[[fetchedObjects objectAtIndex:0] valueForKey:@"lastUpdateCheckSum"] doubleValue];
return returnable;
}//getStoredChecksum()
ご覧のとおり、フェッチリクエストを実行しますが、エラーが発生したかどうかを確認する方法がわかりません。ご覧のとおり、を介して配列が空かどう[fetchedObjects count] == 0
かを確認していますが、エラーが発生して配列がnilの場合、カウントにも0が返されるため、配列の空性をテストしても安全であるとどこかで聞きました。方法ですが、null配列のチェックをマスクします。したがって、問題は、エラーが発生したかどうかを確認する明確な方法がないことです。これをどのように行うべきかについて何か考えはありますか?
前もって感謝します!
編集:
この場合、どのようにエラーをチェックしますか?
NSUInteger numEntities = [[self managedObjectContext] countForFetchRequest:fetchRequest error:&error];
NSUIntegerはunsignedintとして指定されているため、必要に応じて、値-1を割り当てて、後で-1を確認することもできません。