2010-04-19 64 views
0

我有一個數組,我從XML文件中加載大量數據。我在桌面視圖上顯示它,然後當你點擊說一個作者時,它會顯示他們所有的書。在NSMutable數組中分組數據

當時我的NSMutableArray有一個條目,每一本書的標題,作者等等。因此,在作者的表格中,它顯示了作者姓名的次數,因爲他們有書籍。我想對數組數據進行分組,以便表格只顯示每個作者一次,但作者包含他的書籍數組。看起來很簡單,但我找不到數組的方法。

回答

1

您可以遍歷books數組併爲作者創建一個新數組。對於每本書,使用containsObject檢查作者是否已經在作者數組中。但是,當用戶選擇作者時,您還必須擔心僅從書籍數組中顯示作者的書籍。

將xml文件首先加載到NSMutableDictionary中可能更好,而不是鍵是作者名稱,而每個鍵的對象是作者書的NSMutableArray。

然後,作者tableview將使用字典的鍵作爲數據源(使用allKeys返回的數組,然後您可以根據需要進行排序或使用keysSortedByValueUsingSelector),而書籍tableview將使用選定鍵的書籍數組。

如果數據變得太大而無法一次加載到內存中,那麼您將不得不使用其他選項,如SQLite。

+0

是的,謝謝他們認爲他們可能是一個簡單的功能,在特定的領域上分組數組。 我已經使用for循環遍歷主數組,並填充每個組的子數組,但是當我將此添加到主數組時,它將子數組添加爲對象,因此當我下次更改它時對主數組中的所有引用進行更改。有沒有辦法將子數組複製到主數組,所以這不會發生?謝謝 – padatronic 2010-04-21 10:52:03

+0

「main」數組的意思是「所有作者的書籍」和「sub」數組是否指「特定作者的書籍」?不知道爲什麼要將子陣列添加回主陣列,或者您「下次更改」的含義。如果您發佈創建子數組的代碼並將它們添加回主數組(將代碼添加到您的問題中而不是作爲註釋),可能會有所幫助。我認爲更簡單和更直接的解決方案是使用NSMutableDictionary。這會自動按照作者爲您分組書籍。 – DyingCactus 2010-04-21 12:49:16

+0

我已經通過創建一個對象數組並解決這個問題來解決這個問題,所以我可以使用每個對象的getter和setters來獲得任何東西! – padatronic 2010-04-28 09:25:07