2014-05-23 168 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

你怎么不能?你知道如何制作大复杂的陈述,但不是简单的陈述?你只是在复制和粘贴你并不真正了解的代码?无论如何,我编辑了我的答案,以便一步一步地喂食你的代码,我不喜欢这样做。 –

相关问题