Ios 添加到核心数据时如何避免重复?
我正在试图找出如何避免添加重复数据?我希望通过使用具有唯一行的列来实现这一点,如果该列不是唯一的,则不允许添加整行。目前我添加的行如下所示Ios 添加到核心数据时如何避免重复?,ios,iphone,core-data,Ios,Iphone,Core Data,我正在试图找出如何避免添加重复数据?我希望通过使用具有唯一行的列来实现这一点,如果该列不是唯一的,则不允许添加整行。目前我添加的行如下所示 if([userProfileId isEqualToString: myId]) { User *users = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext: _managedObjectCo
if([userProfileId isEqualToString: myId]) {
User *users = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext: _managedObjectContext];
int i = 0;
for(i = 0; i < responseCount; i++) {
[users setUserId:userIds[i]];
[users setName:names[i]];
[users setDateRetrieved:[NSDate date]];
}
//TODO HAVE TO AVOID DUPLICATE FROM BEING SAVED IN DB
NSError *error = nil;
if(![_managedObjectContext save:&error]) {
//handle error if it does not save
}
[self getDbData];
if([userProfileId isEqualToString:myId]){
User*users=[NSEntityDescription insertNewObjectForEntityForName:@“User”在managedObjectContext:_managedObjectContext];
int i=0;
对于(i=0;i
您可以设置反映您独特内容的NSPredicate,并运行快速查询以查看该内容是否已存在:
将结果类型设置为NSManagedObjectdResultType以加快速度:
fetchRequest.resultType = NSManagedObjectIDResultType;
然后获取计数:
NSUInteger count = [self.managedObjectContext countForFetchRequest:fetchRequest error:&error];
然后检查:
if (count > 0){
// The unique content already exists - do nothing
}
if (count == 0){
// Save the unique content
}
希望这能有所帮助。如果我计划使用常规Sqlite进行缓存,那么使用常规Sqlite是否比使用核心数据更好?好吧,通常情况下,这取决于情况。我会坚持使用核心数据,作为一个框架做很多繁重的工作-要求ManagedObjects只需一毫秒。将获取限制设置为1会更快。如果你经常使用用BOOL值标记200万行(比如hassensomething=YES),那么直接sqlite更可取。