2012-03-01 12 views
1

フェッチ要求が正常に動作し、フェッチされたオブジェクトが問題なく取得されます。私がしたいことは、エンティティが存在しない場合のエラーを処理することです。問題は、私はexecuteFetechRequest:error:を呼び出すとアプリケーションがクラッシュするため、警告を出さずにエラーを処理できないということです。 executeFetchRequestエラーを処理できません

は次のようにルックスをフェッチマイ:

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

ウムを実行しない存在しない場合は

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"); } 

を..あなたは、フェッチ要求を行うべきではありません存在しないエンティティタイプの場合どのような状況でこれを行う必要がありますか? –

+0

実際には良い質問です:/ ...私は異なるバージョンのアプリケーション間の同期の場合にチェックする必要があると思ったが、実際には別の方法でこのケースをキャッチします。ありがとう、ハハ...しかし、100%確実であるために、エンティティが存在するかどうかをチェックしてアプリがクラッシュしないようにしてください。 – wolfrevo

+0

これも決して起こらないはずです。このエンティティを削除するようにアプリケーションを更新する場合、コードを変更してもはやそれを使用しないようにする必要があります。データベースを簡単に移行できるように、コアデータモデルをバージョン管理するように設定する必要があります。 –

答えて

1

あなたがモデルを求めることができる:あなたがフェッチreuest

関連する問題