如何使用NSArray按字母顺序对NSDictionary中的值进行排序?

时间:2013-08-16 23:52:43

标签: ios objective-c sorting nsarray

我有一个NSDictionary,它包含几个包含多个字符串的数组。我想把每个数组下的所有字符串放在一个单独的数组中。我怎样才能一次收到所有字符串?我试过这个:

NSMutableArray *mutarr = [[NSMutableArray alloc] initWithObjects:[self.firstTableView allValues], nil];
NSArray *mySorted = [[NSArray alloc]init];
mySorted = [mutarr sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

NSLog(@"First table view values: %@", mySorted);

注意:self.firsttableview是这样的NSDictionary:

NSString *path = [[NSBundle mainBundle] pathForResource:@"firstTableView" ofType:@"plist"];

self.firstTableView = [NSDictionary dictionaryWithContentsOfFile:path];

EFFECT:这给了我NSLog中的一个列表,但它不是按字母顺序排列的。

3 个答案:

答案 0 :(得分:2)

您正在使用一个对象初始化您的mutarr,该对象是您的字典上allValues返回的数组。相反,试试这个:

NSMutableArray* mutarr = [NSMutableArray array];

for (NSArray* array in self.firstTableView.allValues) {
    [mutarr addObjectsFromArray:array];
}

答案 1 :(得分:0)

您的代码意味着mutarr是一个包含数组数组的数组,而不是一个字符串数组。您应该循环遍历字典中的数组值,并将每个项目中的项目添加到mutarr,以使其成为可以排序的字符串数组。

答案 2 :(得分:0)

如果您的NSDictionary值是数组,那么您正在尝试对数组进行排序而不是字符串。尝试创建一个for循环来迭代[self.firstTableView allValues],然后将该数组中的所有值添加到main中以排序数组。