我有一个允许用户保存收藏夹的应用程序。我正在使用 Core Data 将收藏夹存储为托管对象。我已经编写了一些代码来防止存储重复项的可能性,但我想知道是否有更好的方法来做到这一点。每个收藏对象都有一个唯一的 ID 字段。在下面的代码中,我只是循环并检查 ID 字段,如果该值已经存在,则将标志值设置为 true,然后跳出循环。
-(BOOL)addFavorite{
BOOL entityExists = NO;
if(context){
// does this favorite already exist?
NSArray *allFaves = [AppDataAccess getAllFavorites];
for(Favorite *f in allFaves){
if([f.stationIdentifier isEqualToString:stID]){
entityExists = YES;
break;
}
}
if(!entityExists){
NSError *err = nil;
Favorite *fave = [Favorite insertInManagedObjectContext:context];
fave.stationRealName = riverGauge.name;
fave.stationIdentifier = stID;
fave.stationState = @"WV";
if(![context save:&err]){
NSLog(@"ERROR: Could not save context--%@", err);
}
return YES;
}
return NO;
}
我想知道 Core Data 是否有能力检查添加的对象是否重复。是否有可以处理重复检查的谓词?谢谢!