我有一个核心数据表,它包含100个数据,一个可变数组有一些数据。 iw ant搜索可变数组包含数据存在于表中或不存在.mutable数组包含3个参数使用这些参数我需要找出一个id。包含我的表 我正在使用此代码
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN self.@allKeys" ,self.beaconListArray ];
request.predicate = predicate;
NSError *error = nil;
NSArray *objs = [managedObjectContext executeFetchRequest:request error:&error];
if (error) {
[NSException raise:@"no find" format:@"%@", [error localizedDescription]];
NSLog(@"there is noooo with same id exsist");
}
if (objs.count > 0) {
NSLog(@"there is a with same id exsist. Use update method");
}else {
NSLog(@"there's no with same id. Use insert method");
}
答案 0 :(得分:0)
据我所知,你有一系列数据。每个数据项都是字典或自定义对象或其他东西,并且具有uniqueId。您希望将数据插入或更新到核心数据中。
我不确定您为uniqueId使用的属性或您尝试插入的数据类型。所以这段代码只是为了演示。
首先从数据中获取uniqueIds。类似的东西:
NSArray* thingIdArray = [self.beaconListArray valueForKeyPath:@"uuid"];
接下来做一个提取。你的谓词看起来像
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"uuid", thingIdArray];
接下来将作为托管对象数组的结果转换为字典,其中键是uniqueId。
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
for (CoreDataThing* t in result) {
NSString* thingId = t.uuid;
if (thingId) {
dict[thingId] = t;
}
}
现在,对于每个数据项,您可以看到项目是否已存在
for (NSDictionary* a in self.beaconListArray) {
NSString* thingId = a[@"uuid"];
CoreDataThing* coreDataThing = dict[thingId];
if (!coreDataThing) {
coreDataThing = //create it here and set default values
}
[coreDataThing updateWithSomeObject:a]
}