NSDictionary键和值的顺序

米雷克

我知道在中NSDictionary,枚举时不能保证项目的顺序。

但是,可以安全地期望[[myDictionary allValues] objectAtIndex:index]它将始终是key的匹配值[[myDictionary allKeys] objectAtIndex:index]吗?(假设字典是不可变的)。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

即使两者很有可能处于同一顺序,Apple也可以随时更改它,因为根本无法保证顺序。

如果您需要两个NSArrays,一个带有键,一个带有值,带有“并行”索引,那么一种更好的方法是自己枚举字典的键-值对,然后将它们添加到两个数组中,从而自己构建这些数组建造:

NSMutableArray *keys = [NSMutableArray array];
NSMutableArray *vals = [NSMutableArray vals];
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [keys addObject:key];
    [vals addObject:obj];
}];

您还可以分别获取键,然后通过调用objectsForKeys:notFoundMarker:方法获取具有并行索引的数组中的值

NSArray *keys = [dict allKeys];
// In the call below, the marker [NSNull null] will not be used, because we know
// that all keys will be present in the dictionary.
NSArray *vals = [dict objectsForKeys:keys notFoundMarker:[NSNull null]];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章