【问题标题】:Delete Data From a Specific Row in Core Data从核心数据中的特定行删除数据
【发布时间】:2014-05-08 13:21:41
【问题描述】:

在 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 data 很陌生,基本上我想在 SQL 中做类似的事情

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

谁能帮助我并提供一个链接。

【问题讨论】:

标签: objective-c core-data


【解决方案1】:

就像 Sqlite 的“DELETE from 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 并从您的NSManagedObjectContext 调用deleteObject:

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

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

【讨论】:

    【解决方案2】:

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

    Delete object in Core Data

    Removing a specific entry/row from Core-Data

    希望这能解决您的问题。

    【讨论】:

    • 这些应该是重复的标志/链接
    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多