Pra*_* SP 3 iphone core-data core-data-migration ios ios7
我正在通过核心数据将新对象插入数据库.在插入值之前,有没有办法检查数据库中是否有任何重复?
AccountDetails * newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"AccountDetails" inManagedObjectContext:self.managedObjectContext];
newEntry.acc_date=date;
newEntry.bank_id=bank_id1;
NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)
每次我运行应用程序时,它会再次重新插入值.我想检查是否有任何新的类别,如果没有,那么我将只添加新的类别.
提前致谢..
你可以取,或者你可以数.计数比获取快得多.取决于你想要做什么.
如果您只想插入new和skip重复项,则使用它-[NSManagedObjectContext countForFetchRequest: error:]来确定对象是否存在.
您可以预先构建谓词,只需替换每个循环上的唯一值,这样即使谓词的成本也很低.这是相当高效的,但不是最好的解决方案,因为它会在每个循环上击中磁盘.
另一种选择是将fetch更改为:
然后从可插入数组中获取所有唯一值到一个字符串数组(例如),然后使用以下命令执行单个提取:
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"myUnique in %@", uniqueIDArray]];
Run Code Online (Sandbox Code Playgroud)
然后,你有一个不重复的数组ARE在店里了.当你循环遍历你的对象时,你可以从那里检查那个数组,如果你跳过了那个唯一的,那你就插入了.这将为直接插入或跳过要求产生最佳性能.
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |