Mar*_*ace 0 objective-c nsmutabledictionary ios4
我对NSMutableDictionary有一些疑问.我读到它们只是一个hashmap的包装器,所以不鼓励它们用于有序列表.
但我必须使用它,所以问题就开始了......
我在NSMutableDictionary中保存了Json的结果(在调用URL之后),然后我有两个不同的"print":
这怎么可能?他们不应该有相同的订单吗?
谢谢大家!
编辑:这是代码的一个小例子:
NSMutableDictionary *myDictionary = [--{RECEIVED FROM ANOTHER CALL}--];
NSMutableDictionary *tmp = [NSMutableDictionary dictionaryWithCapacity:[myDictionary count]];
for(NSString *key in myDictionary) {
NSLog(@"%@", key);
NSObject *object = [[NSObject alloc] init]
/* some operation in the code with object */
[tmp setObject:object forKey:key];
}
Run Code Online (Sandbox Code Playgroud)
在"for statement"之后发生了这样的事情:
问题是:为什么?
编辑2:我知道存在一个有"OrderedDictionary"的系统,但这不是问题:我想理解为什么我有两个不同的打印,一个来自"for statement"而另一个来自"po命令" ".
po <object>gdb中的命令打印输出[<object> description].[NSDictionary description]按键对其输出进行排序.这是记录在案的行为.
如果您的JSON按键排序(听起来像是这样),那么您可以再次按键排序以确保可靠的订单.
请注意,如果您的JSON使用对象(键/值对的集合)来表示有序数据,则它违反了JSON规范.
对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串,数字,布尔值,空值,对象或数组.
正确的编码是单键对象的数组,例如:
[ { "firstKey": "value" }, { "secondKey": "value" } ]
Run Code Online (Sandbox Code Playgroud)
但是,如果您可以使用排序键来定义顺序,那是合适的.
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |