根据另一个数组的对象(实际上是键)对nsdictionary进行排序

时间:2014-03-13 08:23:48

标签: objective-c sorting nsarray nsdictionary

我有一个名为NSArray的{​​{1}},其记录如下:

self.ownerOrderArray

我还有一个order array is ( "Date Of Birth", republic, Marriage, Currency, Incentive, "Interview Dates", hobbies, "Tanki Online", skills, "Sal Range" ) 作为NSMutableDictionary哪个日志:

这样的日志:

self.tempDict

如何获得上述字典,其键/值的排序顺序与tempDict dictionary is>>>>> { Currency = 56789; "Date Of Birth" = "2014-03-15"; Incentive = 5; "Interview Dates" = "Jan 20"; Marriage = "2014-03-29"; "Sal Range" = "|#|0 - 10k|#|10k - 20k|#|20k -30k|#|30k-40k|#|40k-50k|#|"; "Tanki Online" = Thunder; hobbies = Cricket; republic = 26jan; skills = "|#|PHP|#|Java|#|Python|#|objctive-c|#|c|#|c++|#|objective-c++|#|c#|#|"; } 相同?

2 个答案:

答案 0 :(得分:1)

由于字典没有订单,您无法获得以相同顺序记录值的字典。

您可以做的是使用objectsForKeys:notFoundMarker:获取与您的键数组的顺序相匹配的值数组。如果您拥有所有密钥,那么未找到的标记不是问题,只需将其设置为[NSNull null]即可。如果您没有所有密钥,那么您需要注意结果数组中的空值。

答案 1 :(得分:0)

按照Wain的说法,“你不能得到一个字典,按照你给出的顺序记录值”。

首先按字典的升序或降序对所有键进行排序,然后获取排序数组键索引的值。像这样

NSDictionary *valuesDictionary = //Your Response Dictionary ;

NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)];

NSMutableDictionary *orderedDictionary = [NSMutableDictionary dictionary];

for (NSString *key in sortedKeys){
            [orderedDictionary setObject:[valuesDictionary objectForKey: key] forKey:key];
}

这应该适合你。