2016-06-08 17 views
0

所以我有這樣的NSDictionary像這樣:的Objective-C的NSDictionary到NSMutableArray中以一定的次序

NSDictionary *productionSchedule = [[[NSMutableDictionary alloc]initWithDictionary:[[areaData GetProductionScheduleData:communityDesc] objectForKey:@"Root"]] autorelease]; 

爲NSDictionary的數據是從一個API,並由於未來是的NSDictionary沒有做排序時, API中的數據順序在NSDictionary中不同,所以現在我試圖將NSDictionary的鍵放入NSMutableArray來處理排序。在我的NSDictionary中,我有一個名爲SortOrder的值,我試圖將NSDictionary中的數據放入NSMutableArray,基於這個值SortOrder(我有大約389個項目,SortOrder從0 - 389)我該怎麼做?

我有這個截圖,會告訴你我的數據是這樣的:

enter image description here

我所試圖做的是把鑰匙「V3C0183」,但作爲第82項(會有81在此之前的項目)

我假設我會做一個foreach循環,像這樣:

NSMutableArray *prodSchedSortedKeys 

for(int i = 0;i<[productionSchedule count];i++) 
{ 

[prodSchedSortedKeys addObject: ? ]; 

} 

我只是不知道下一步是什麼竟被d是添加一個基於排序順序的對象....請幫助。

+0

我在您提出的主題中沒有看到任何新內容。對數組進行排序已經有很多次了。我建議你通過運行搜索來幫助自己。 –

+0

你的鑰匙是否也在你的「價值」字典中? – Paulw11

+0

鍵值也是NSDictionary,並且該值有一個名爲SortOrder的鍵,並具有它自己的值 – user979331

回答

0
NSDictionary *dic = //your dictionary; 

NSArray<NSDictionary *> *values = dic.allValues; 
[values sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { 
    return [obj1[@"SortOrder"] integerValue] > [obj2[@"SortOrder"] integerValue]; 
}]; 

現在DIC是有序的。

但這不是這個問題的最佳解決方案。服務器的數據應該是有序的,像「VC31083」這樣的鍵也應該在鍵值對中。

編輯1:sortedArrayUsingComparator:用於正常排列數組,如果內容太大,性能不太好。特別是在這個比較中,它會執行添加操作:從字典中獲取值,將NSString轉換爲int,然後進行比較。您可以通過日誌查看在這種數據上花費了多少時間。

相關問題