如何使用JSONModel映射有序的NSDictionary

时间:2016-06-13 15:21:21

标签: ios objective-c nsdictionary unordered jsonmodel

我有一个JSON如下。

odds: {
0501: {
x: 2.75,
description: "a"
},
0502: {
x: 3.25,
description: "b"
},
0513: {
x: 3.5,
description: "c"
},
0503: {
x: 3.5,
description: "d"
},
0505: {
x: 7.5,
description: "e"
},
0504: {
x: 7.5,
description: "f"
},
0512: {
x: 10,
description: "g"
}
}

这个哈希来自我想要显示的HTTP响应,但是我使用JSONModel来映射它,并且只有这种方式来映射NSDictionary。将这个JSON映射到NSDictionary时(正如你猜测的那样),这个无序的数据序列会混合在一起。

那么,如何映射这个JSON,而不是使用JSONModel和NSDictionary打破它的序列?

3 个答案:

答案 0 :(得分:0)

NSDictionary本质上是无序的:

Are keys and values in an NSDictionary ordered?

如果要保留键值条目的顺序,则需要使用NSDictionary以外的数据结构。通过NSDictionary传递数据的任何库都无法保留订单。

答案 1 :(得分:0)

我在这种情况下所做的事情是除了字典外,还要将字典键排序在一个单独的数组中。使用有序键数组确定如何显示字典值。

答案 2 :(得分:0)

字典无法排序,但由于您的JSON似乎是一个对象数组,因此通过for ... in迭代生成的NSDictionary并将元素添加到可变数组中。

然后通过比较x值来使用.sortInPlace对生成的数组进行排序。