2016-04-19 10 views
1

コアデータにオブジェクトが格納されています。今度は、一度に1つの行を除くすべてのオブジェクトをフェッチして、その上で操作を終了した後、その行/オブジェクトだけをコアデータから削除します。また、次の行をフェッチしてその行を削除し、コアデータが空になるまで続けます。コア・データ内のオブジェクトを格納する(良いアプローチで)私のコード:iOS - コアデータ:一度に1行ずつフェッチと削除

-(BOOL)saveProduct:(AddProduct *)addProduct withImageNSData:(NSData *)imageNSData error:(NSError *)error{ 
    NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:self.managedObjectContext]; 
    Device *device = (Device *)object; 
    [device setValue:addProduct.CurrencyType forKey:@"currencyType"]; 
    [device setValue:[NSNumber numberWithDouble:addProduct.Latitude] forKey:@"latitude"]; 
    [device setValue:[NSNumber numberWithDouble:addProduct.Longitude] forKey:@"longitude"]; 
    [device setValue:[NSNumber numberWithDouble:addProduct.Price] forKey:@"price"]; 
    return [self.managedObjectContext save:&error]; 
} 
+0

ここにhttps://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/ - 答えが必要 – gbk

+0

なぜそれをしたいですか? – Wain

+0

@ Wain、モバイルがオフラインのときにオペレーションキューを作成する必要があり(コアデータ内)、デバイスがオンラインになるたびに行を1つずつ取り出してその行の操作(ヒットWebサービス)を実行してから削除します行をコアデータから取り出し、コアデータキューが空になるまで2行目などにします。 –

答えて

0

これは、デバイスの全てを取得し、それらを反復処理、あなたがそれらにあなたの仕事を行ってきた後にオブジェクトを削除します:

NSManagedObjectContext *context = self.managedObjectContext; 
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Device"]; 

//Fetch all of the Devices 
NSError *error; 
NSArray *allDevices = [context executeFetchRequest:fetchRequest error:&error]; 
if (error) { 
    NSLog(@"Error fetching devices! %@", error); 
    return; 
} 

for (Device *device in allDevices) { 
    // Perform your operation on the device 

    [context deleteObject:device]; 
} 
[context save:NULL]; 
関連する問題