我必须 2 NSMutableArray
s 包含NSMutableDictionary
s。我需要验证一个数组中的字典是否存在于另一个数组中。我怎样才能做到这一点?
问问题
1612 次
2 回答
4
我不确定这是否是最好的方法,但它很容易。我创建了一个方法来验证 aNSDictionary
是否存在于 aNSArray
中。在这个函数中,我将NSDictionary
s 转换为NSString
s 并比较它们。
- (BOOL)verifyIfDictionary:(NSDictionary *)dict existsInsideArray:(NSArray *)array
{
BOOL result = NO;
NSString *dictStr = [NSString stringWithFormat:@"%@",dict]; // convert dictionary to string
for (NSDictionary *d in arrayOfDictionaries)
{
NSString *dStr = [NSString stringWithFormat:@"%@",dict]; // same conversion as above conversion
// now, I just have to compare the resulting strings
if ([dictStr isEqualToString:dStr])
result = YES;
}
return result;
}
现在您只需遍历您NSArray
的其中一个并使用此方法,如下所示:
NSArray *arrayOfDictionaries1;
NSArray *arrayOfDictionaries2;
// initialize them, fill with data, do your processing.. etc, etc...
// then, when you want to verify:
for (NSDictionary *dict in arrayOfDictionaries1)
{
if ([self verifyIfDictionary:dict existsInsideArray:arrayOfDictionaries2])
{
NSLog(@"exists!");
}
}
于 2013-06-27T22:16:16.390 回答
0
检查是否array1
包含所有项目array2
:
NSMutableArray *mutableArrayToCheck = [array2 mutableCopy];
[mutableArrayToCheck removeObjectsInArray:array1];
if (array2.count > 0 && mutableArrayToCheck.count == 0) {
// array2 contains all the items in array1
}
暂时忽略数组内容的类型,只考虑数字。我们有 2 个数组:
array1 = [ 1, 2, 3 ]
array2 = [ 1, 3 ]
如果我们从 array2 中删除 array1 中的项目,结果是一个空数组,那么我们知道 array2 中的所有项目也在 array1 中。
removeObjectsInArray:
通过搜索数组并比较每个项目来为我们做到这一点。我们只需要检查结果。
无论数组的内容是什么,只要它们实现hash
和,这都有效isEqual:
。
于 2013-06-27T21:41:16.927 回答