ios - 有没有更好的方法来展平 NSDictionaries 的 NSArray?

标签 ios objective-c swift nsarray nsdictionary

我有一个字典数组,看起来像这样:

    @[@{@"object" : @"circle", @"total" : @12},
      @{@"object" : @"square", @"total" : @7},
      @{@"object" : @"triangle", @"total" : @4},
    ];

我想把它扁平化成一个字典,其中键是对象,值是总数:

    @{@"circle" : @12,
      @"square" : @7,
      @"triangle" : @4,
    };

除了遍历数组和映射键之外,还有什么方法可以做到这一点吗?

NSMutableDictionary *objects = [[NSMutableDictionary alloc] init];
for (NSDictionary *object in array)
{
    [objects setObject:object[@"total"] forKey:object[@"object"];
}

如果没有其他使用 Objective C 的方法,如何用 Swift 编写转换?

最佳答案

一种方法是使用 KVC:

NSArray* array = @[@{@"object" : @"circle", @"total" : @12},
    @{@"object" : @"square", @"total" : @7},
    @{@"object" : @"triangle", @"total" : @4},
];
NSArray* objects = [array valueForKeyPath:@"object"];
NSArray* totals = [array valueForKeyPath:@"total"];
NSDictionary* final = [[NSDictionary alloc] initWithObjects:totals forKeys:objects];

关于ios - 有没有更好的方法来展平 NSDictionaries 的 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211478/

相关文章:

ios - 在无法存储原始字符串的情况下可逆地对 NSString 进行加扰

ios - 清除结构/类中的静态变量

ios - 创建一个通用的 UViewController 初始化器

ios - 在 Xcode 6.1 中设置导航栏文本字体

ios - iOS 中的 Google Admob 集成错误

objective-c - 如何在没有按钮操作的情况下更改文本字段

ios - AFNetworking - 对 REST 进行 HTTP POST,发送带有 Base64 字符串图像的 JSON

swift - 如何从另一个线程提供图像?

ios - 隐藏导航栏的问题

ios - 根据图像纵横比调整 UIImageView 的大小