我使用core-data
在数据库中插入值,并且还可以看到重复项。
我已经搜索到我必须首先获取内容然后匹配当前数据,如果不匹配然后插入但它似乎不是可行的解决方案。
所以请给一些替补。
答案 0 :(得分:1)
这是正确的。 Core Data提供了用于管理对象图的API。它还提供了持久化对象图的能力。
如果需要这种唯一性,程序员必须保证对象的唯一性。
通常的方法是为每个对象设置一个关键字段。然后,您可以搜索具有相同键字段值的对象。如果找到此类对象,则可以更新该对象中的信息。如果找不到这样的对象,则可以创建新对象。
在任何情况下,程序员都有责任保证唯一性。有很多方法可以做到这一点。
大多数对象表示具有固有的关键字段。如果您的密钥是整个对象状态,那么也许您可以向对象布局添加唯一键...或者使用整个对象的加密哈希作为关键字段。
答案 1 :(得分:0)
尝试以下
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyEntityName"];
[request setPredicate:[NSPredicate predicateWithFormat:@"keyToBeCompared = @"DuplicateString"]];
NSError *error = nil;
MyEntityName *objectInstance = [[self.managedObjectContext executeFetchRequest:request error:&error] lastObject];
if (objectInstance && !error) {
NSLog(@"duplicate object found");
// Jst update the keyValue
objectInstance.keyToBeCompared = @"New Updated value"; // This will automatically update the duplicate value
}