从核心数据中的特定行删除数据

时间:2014-05-08 13:21:42

标签: objective-c core-data

删除Core Data中的一行数据的最佳方法是什么?我可以使用indexPath在线找到很多答案:

NSManagedObjectContext *context=[self managedObjectContext];
[context deleteObject:[self.recordarray objectAtIndex:indexPath.row]];

NSError *error=nil;
    if (![context save:&error]) {
        NSLog(@"Cant save %@ %@",error,[error localizedDescription]);
    }
    [self.recordarray removeObjectAtIndex:indexPath.row];

我没有表视图,我正在为自定义视图保存数据。我对Core数据很新,基本上我想在SQL中做类似的事情

Delete Row with FirstColumn(Primary Key) is Equal to "ABC" 

有人可以帮助我并提供链接。

2 个答案:

答案 0 :(得分:2)

与Sqlite的“从tableName WHERE条件中删除”一样,您没有从CoreData中删除MULTIPLE个对象的单一步骤。

CoreData 中,首先您必须使用NSFetchRequestNSPredicate

获取必须删除的对象
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"EntityName"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"propertyName == %@", value];
[request setPredicate:predicate];

NSError *error = nil;
NSManagedObjectContext *managedObjectContext;//Your ManagedObjectContext;
NSArray *result = [managedObjectContext executeFetchRequest:request error:&error];

然后,您应该迭代遍历每个NSManagedObject并从deleteObject:致电NSManagedObjectContext

if (!error && result.count > 0) {
    for(NSManagedObject *managedObject in result){
        [managedObjectContext deleteObject:managedObject];
    }

    //Save context to write to store
    [managedObjectContext save:nil];
}

答案 1 :(得分:0)

由于数据将存储在核心数据对象中,只需删除该对象即可。 也可以参考

Delete object in Core Data

Removing a specific entry/row from Core-Data

希望这会解决您的疑问。