2014-03-13 38 views
0

我有一个NSArray名为self.ownerOrderArray,它记录这样的:排序基于另一阵列的对象(实际上密钥)一个NSDictionary

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#|#|"; 
} 

我怎样才能得到上面的字典,字典的键/值以相同的顺序进行排序为self.ownerOrderArray

回答

1

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

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

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]; 
} 

应该为你工作。

+1

词典没有顺序。无论您在什么顺序添加项目... – Wain