判断2个字典是否相等

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 --

可以看出,字典这种无序的结构,可以判断。如果修改数组中的顺序,那个就不相等了。

你可能感兴趣的:(判断2个字典是否相等)