2013-08-16 41 views
0

我有一個NSDictionary包含幾個數組與幾個字符串在他們。我想把每個數組下的所有字符串放在一個數組中。我怎樣才能一次接收所有的字符串?我已經試過這樣:我如何按字母順序排列NSDictionary中的值與NSArray?

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]; 

效果:這讓我在NSLog的列表,但它不是按字母順序排列。

回答

2

您正在使用一個對象來初始化您的mutarr,該對象是字典上由allValues返回的數組。相反,試試這個:

NSMutableArray* mutarr = [NSMutableArray array]; 

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

根據描述,這將導致數組的數組,而不是一個字符串數組。 – Wain

+0

謝謝。編輯。 –

+0

謝謝你爲我工作! –

0

您的代碼意味着mutarr是一個包含數組數組而不是數組的字符串的數組。您應該循環查看字典中的數組值,並將每個項目中的項目添加到您的mutarr以使其成爲可以排序的字符串數組。

0

如果你的NSDictionary值是數組,那麼你試圖對數組而不是字符串進行排序。嘗試創建一個for循環迭代[self.firstTableView allValues],然後將該數組中的所有值添加到您的main中以對數組進行排序。