2014-05-23 164 views
0

我在按照字母順序從我的「plist」中顯示數據時遇到問題。這是我從我的「plist」中抽取一些數據並將其顯示在我的tableView中的行。從plist按字母順序對項目進行排序

[self.objects addObjectsFromArray:[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle 
mainBundle] pathForResource:@"Climb Data" ofType:@"plist"]] allKeys]]; 

我知道在Java中它會沿着Collections.sort線的東西,但我似乎無法找到在Objective-C的等價物。

謝謝你的任何意見。

+1

NSArray文檔有一個「排序」部分... –

+0

謝謝,我會研究一下 – user3669844

+1

正如我們所知道的那樣,NSDictionary並不是一個有序的數據結構。你看過'''keysSortedByValueUsingSelector'''嗎? – raurora

回答

0

不要在一行代碼中做這麼多事情。這使得它很難弄清楚和調試。它也不會使代碼更快。

首先加載字典。

然後使用allKeys將密鑰加載到數組中。

THEN創建數組的排序版本。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Climb Data" ofType:@"plist"]; 
NSDictionary *dictionary =[NSDictionary dictionaryWithContentsOfFile: path]; 
NSArray *keysArray = [dictionary allKeys]; 

最後一步很簡單:

NSArray *sortedArray = [keysArray sortedArrayUsingSelector: @selector(compare:)]; 

你也可以使用caseInsensitiveCompare:

也有像sortedArrayUsingComparator:是採取了比較器模塊(您提供的代碼塊)排序方法陣列。你的代碼塊是一個比較數組中的對象的原語。 sort方法重複調用您的塊,並使用這些調用的結果對數組進行排序。

+0

嗯我不知道我是否知道如何分開做前兩步 – user3669844

+0

你怎麼不能?你知道如何製作大複雜的陳述,但不是簡單的陳述?你只是在複製和粘貼你並不真正瞭解的代碼?無論如何,我編輯了我的答案,以便一步一步地餵食你的代碼,我不喜歡這樣做。 –

相關問題