【问题标题】:iOS - Core data : Fetch and delete , one row at a timeiOS - 核心数据:获取和删除,一次一行
【发布时间】:2016-04-19 05:04:35
【问题描述】:

我有一些对象存储在核心数据中。现在我想一次获取除一行之外的所有对象,在完成对它的操作后,我只想从核心数据中删除该行/对象。然后再次获取下一行并删除该行,依此类推,直到核心数据为空。 (采用好方法)我将对象存储在核心数据中的代码:

-(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];
}

【问题讨论】:

  • 你为什么要这么做?
  • @Wain,当移动设备离线时,我必须创建一个操作队列(在核心数据中),并且每当设备上线时,我想逐行获取并执行操作(点击网络服务)在该行上,然后从核心数据中删除该行,然后取第二行,依此类推,直到核心数据队列为空。
  • 查看Matthew's answer here 获取数据

标签: ios objective-c core-data


【解决方案1】:

这将获取所有设备并遍历它们,在您对它们执行工作后删除对象:

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多