我正在通过核心数据将新对象插入数据库。 有什么方法可以在我插入值之前检查数据库中是否有任何重复?
for (int i =0;i<[categoryArray count];i++)
{
Category * cat = [categoryArray objectAtIndex:i];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"ICategory" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
ICategory *catt = (ICategory *)[NSEntityDescription insertNewObjectForEntityForName:@"ICategory" inManagedObjectContext:managedObjectContext];
[catt setName:cat.name];
[catt setID:cat.ID];
[catt setPhoto:cat.photo];
[catt setSapphireID:event.ID];
NSLog(@"cattttt have %@", catt);
}
每次我运行应用程序时,它会再次重新插入值。我想检查是否有任何新的类别,如果有,那么我将只添加新的类别。
答案 0 :(得分:1)
无法免费检查重复项。您需要手动处理用于确定两个对象相同的谓词。
最简单的方法是使用-[NSMangedObjectContext countForFetchRequest:error:]
快速查看对象是否已存在,因为计数大于0。
遵循三个的规则(第三次你需要重写它)我为自己做了一些方便的方法来处理这个问题。更具体地说是-[NSManagedObjectContext insertNewUniqueObjectForEntityForName:withPredicate:]
。如果您想将其用作灵感或原样,它可以在https://github.com/jayway/CWCoreData作为开源使用。