【发布时间】:2010-11-02 20:31:15
【问题描述】:
我是菜鸟,我很抱歉,因为这个问题真的很愚蠢。我有一个 NSArray,其中包含俄语 NSDictionaries 中 UITableView 行的标题,我需要按字母顺序对这些标题进行排序。我该怎么做?
请帮帮我。
提前致谢!
【问题讨论】:
标签: iphone uitableview ios
我是菜鸟,我很抱歉,因为这个问题真的很愚蠢。我有一个 NSArray,其中包含俄语 NSDictionaries 中 UITableView 行的标题,我需要按字母顺序对这些标题进行排序。我该怎么做?
请帮帮我。
提前致谢!
【问题讨论】:
标签: iphone uitableview ios
在 iOS 4.0 及更高版本上,您可以使用排序描述符。假设 title 是您的标题字符串存储在字典中的键:
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:
[NSArray arrayWithObject:
[NSSortDescriptor sortDescriptorWithKey:@"title"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]]];
另一种选择是使用基于块的排序方法:
NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(id obj1, id obj2) {
NSString *string1 = [(NSDictionary *)obj1 objectForKey:@"title"];
NSString *string2 = [(NSDictionary *)obj2 objectForKey:@"title"];
return [string1 localizedCaseInsensitiveCompare:string2];
}];
但是,如果您需要您的应用在 iOS 3.1.3 及更早版本上运行,您可以:
-sortedArrayUsingSelector:,或者-sortedArrayUsingFunction:context:。在每种情况下,您的方法或函数的主体都将与上面第二个示例中的块主体基本相同。 NSArray class reference 包含这两种技术的示例。
【讨论】:
我认为这会对您的数组进行排序:
NSArray *sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
【讨论】: