1.方式1遍历2个字典,逐个key、value判断。
NSDictionary *oneDict = @{@"key1" : @"nice", @"key2" : @"相等"};
NSDictionary *twoDict = @{ @"key2" : @"相等", @"key1" : @"nice"};
__block BOOL equal = YES;
[oneDict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
id twoObj = [twoDict objectForKey:key];
if(!twoObj || twoObj != obj) {
equal = NO;
*stop = YES;
}
}];
//字典相等[9779:161029] -- 1 --
NSLog(@"%ld",(NSInteger)equal);
NOTE:
确保遍历的字段keys多于判断的字典。
这个还是简单的单层字典,如果内部嵌套数组,字典,那就不好判断了。
2.使用isEqual:方法判断
NSDictionary *oneDict = @{@"key1" : @"nice", @"key2" : @"相等",@"key3" : @[@"a",@"b"]};
NSDictionary *twoDict = @{ @"key2" : @"相等", @"key1" : @"nice",@"key3" : @[@"a",@"b"]}.mutableCopy;
NSLog(@"-- %ld --",(NSInteger)[oneDict isEqual:twoDict]);
//字典相等[9930:165382] -- 1 --
可以看出,字典这种无序的结构,可以判断。如果修改数组中的顺序,那个就不相等了。
网友评论