RestKit を使用してコア データ ストアにデータをインポートしており、重複をチェックする必要があります。商品がすでにストアにある場合は、最新の属性で更新したいと思います。新品なら作りたいです。
インポートが遅かったので、Instruments を使用しましたが、インポートの最も長い部分は、項目が既に存在するかどうかを確認することでした (フェッチ要求を使用)。
そのため、アイテムがすでにストアにあるかどうかを確認したいのですが、次のほうが速いですか?
- countForFetchRequest を使用して項目が既に存在するかどうかを確認し、次に executeFetchRequest を使用して更新する項目を返すか、
- 更新するアイテムを取得するためにFetchRequestを実行するだけです
- またはこれを行うためのより良い方法はありますか?
NSManagedObject 全体が返されず、NSManagedObject が存在することがわかっている場合にのみフェッチ要求を実行するため、countForFetchRequest の方が高速であると考えました。
ありがとう
- (Product *)productWithId:(int)productID {
NSManagedObjectContext *context = [Model sharedInstance].managedObjectContext;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"product_id == %d", productID];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:context];
request.predicate = predicate;
request.fetchLimit = 1;
NSError *error = nil;
NSUInteger count = [context countForFetchRequest:request error:&error];
if (!error && count == 1) {
NSArray *results = [context executeFetchRequest:request error:&error];
if (!error && [results count]) {
return [results objectAtIndex:0];
}
return nil;
}
return nil;
}