使用核心数据插入时重复

时间:2014-03-25 11:57:51

标签: ios objective-c

我使用core-data在数据库中插入值,并且还可以看到重复项。

我已经搜索到我必须首先获取内容然后匹配当前数据,如果不匹配然后插入但它似乎不是可行的解决方案。

所以请给一些替补。

2 个答案:

答案 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

        }