2011-05-26 111 views
0

我有3個NSMutableDictionaries爲3個獨立的UITableViews保存數據。當從一個UITableViews檢查一個值時,我想要保存該值,這取決於從不同表中檢查的不同值,我可以在下一頁生成一個答案。我想也許我可以創建一個新的NSMutableDictionary,它具有所有可能的選擇,然後當用戶點擊複選框時,告訴我的newNSMutableDictionary該值已被選中。但我認爲它不是那種方式,因爲它是一個重要的價值配對。我想知道是否有替代方案,或者是否有人持有這些信息的好方法?謝謝。NSMutableDictionary的替代品?

回答

0

爲什麼不把所有可能的選擇存儲在NSDictionary中,用用戶可以做出的所有選擇來初始化它。當用戶進行選擇時,將該項目添加到「selectedItems」NSMutableDictionary中。這樣,你的NSMutableDictionary(包含選擇)將只有選中的項目,你可以添加和從這個字典中刪除,而不需要改變包含用戶可以選擇的非可變NSDictionary。

2

而不是這樣做,你可以嘗試有一個NSMutableArray所選的NSIndexPath對象。 這樣,你就會有一個漂亮的輕量級的內存佔用(延遲加載),如果你需要抓住的實際單元格的值,你可以問UITableView-tableView:cellForRowAtIndexPath:

,或者甚至更好,有一個NSMutableDictionary有一個鍵是包裝在NSNumber中的特定桌面視圖的tag,值是所選索引路徑的NSMutableArray

要檢索選定的指數路徑是如此簡單:

NSArray *indexPaths = [selectedDict objectForKey:[NSNumber numberWithInt:tableView.tag]]; 

for(NSIndexPath *p in indexPaths) { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:p]; 
    //do something with cell... 
} 
+0

母艦一樣需要是可變的,如果它包含用戶在運行時進行選擇? – Matt 2011-05-26 21:50:31

+0

@Matt,是的,這是正確的。 – 2011-05-26 21:50:59

0

我不知道如果我正確理解你的問題。

但是,如果您的數據具有樹的「形狀」,則可以考慮以這種方式保存信息。

  • 你可以把字典你的字典裏
  • 你可以把你的數據在CoreData和使用NSTreeController