2011-03-29 91 views
3

陣列如果這是在這裏有點混亂,是一個可視化表示:排序由其成員字典的鍵

陣列>對象>詞典>值

這裏的一些方面,如果這有助於:

的數組包含播放列表。每個播放列表都有一個字典。每個字典包含元數據。

我需要通過此元數據對原始字典進行排序。

我一直很難在實現這一點。思考?

[編輯]改變了更高字典到一個數組

+3

詞典未排序。你不能「排序字典」。 – 2011-03-29 03:24:05

+1

我想你想排序一個數組。因爲這會比排序字典更有意義。因爲你使用'objectForKey:'方法從一個字典中獲取對象/值,並在一個數組中使用'objectAtIndex:' – Robin 2011-03-29 03:32:06

+0

我已經更新了原始文章以將原始字典更改爲使用數組。 – Nosrac 2011-03-29 03:36:42

回答

5

你想用的至少一個NSSortDescriptor。這基本上是一種表示排序方式的抽象方式。它可以包含一個關鍵路徑(更多關於這一點)或一個函數指針,或其他方式來比較兩個對象。

您可能想要使用它的關鍵路徑。因此,如果您有一個Foo對象的數組,並且它們的「字典」屬性返回NSDictionary,並且您希望根據密鑰@"bar"下的字典中的值對數組進行排序,那麼將創建的排序描述符將是:

[NSSortDescriptor sortDescriptorWithKey:@"dictionary.bar" ascending:YES] 

從這裏你可以使用-[NSArray sortedArrayUsingDescriptors],並通過它包含此NSSortDescriptor的數組。

+0

謝謝。這正是我所期待的! – Nosrac 2011-03-29 03:50:30