一段时间以来,我一直在尝试从逻辑上思考这个问题,通常我可以通过写出来或在做其他与编程无关的事情时思考它来解决它。但是我尝试的一切都不起作用。所以基本上我有 2 NSArrays
,它们都是从 2 个不同的 plist 中填充的。每个数组都填充了所有字典:所有字典都具有相同的键,并且都具有相同的结构,但有些可能具有与键相关联的信息,而有些则没有。我基本上需要检查每个项目array1
,看看它是否存在array2
,如果它不存在,array2
然后将它添加到array1
(或者array3
看看你如何在迭代数组时不能改变它)。我需要它来查看它是否通过特定键“ name_key
”存在。
所以...简而言之,我的最终结果需要是一个NSArray
包含两个数组中的所有对象,而没有具有重复名称的对象(来自字典name_key
)。
下面是我的实际代码不起作用。
在下面的代码中:originalWhiskiesListArray
= array1
newWhiskiesListArray
= array2
combinedWhiskiesListArray
= array3
(因为您不能在迭代数组时对其进行变异。
BOOL whiskyExists = YES;
for (NSDictionary *newWhisky in newWhiskiesListArray) {
for (NSDictionary *originalWhisky in originalWhiskiesListArray) {
NSString * newWhiskyNameString = [[newWhisky objectForKey:NAME_KEY] lowercaseString];
NSString * origWhiskyNameString = [[originalWhisky objectForKey:NAME_KEY] lowercaseString];
//Compare lowercase strings and if they don't match then add them to the original plist array.
if ([newWhiskyNameString isEqualToString:origWhiskyNameString]) {
whiskyExists = YES;
break;
} else {
whiskyExists = NO;
break;
//NSLog(@"Whisky names do not match. New Whisky: %@ Old Whisky: %@",[newWhisky objectForKey:NAME_KEY],[originalWhisky objectForKey:NAME_KEY]);
//doesn't match so add it
}
}
if (whiskyExists == NO) {
[combinedWhiskiesListArray addObject:newWhisky];
NSLog(@"newWhisky added");
whiskyExists = YES;
}
}