NSMutableDictionary的替代?

时间:2011-05-26 21:44:42

标签: iphone objective-c uitableview nsmutabledictionary

我有3个NSMutableDictionaries,它们包含3个独立的UITableViews的数据。当从其中一个UITableViews检查一个值时,我希望保持该值,这取决于从不同表中检查的不同值,我可以在下一页生成一个答案。我想也许我可以创建一个具有所有可能选择的新NSMutableDictionary,然后当用户点击复选框时,告诉我的newNSMutableDictionary已经选择了该值。但我不认为它是这样的,因为它是一个键值配对。我想知道是否有其他选择,或者有人有一个很好的方法来保存这些信息?感谢。

3 个答案:

答案 0 :(得分:2)

您可以尝试使用一个 NSMutableArray个所选NSIndexPath个对象,而不是这样做。 这样,你就拥有了非常轻量级的内存占用(延迟加载),如果你需要获取实际单元格的值,你可以UITableView -tableView:cellForRowAtIndexPath:

询问

或者更好的是,只有一个NSMutableDictionary,其中一个键是tag中包含的特定tableview的NSNumber,其值为NSMutableArray索引路径。

要检索选定的索引路径,就像这样简单:

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

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

答案 1 :(得分:0)

为什么不将所有可能的选择存储在NSDictionary中,使用用户可以进行的所有选择对其进行初始化。当用户进行选择时,将该项添加到“selectedItems”NSMutableDictionary。这样你的NSMutableDictionary(包含选择)将只包含其中的选定项,然后你可以在这个字典中添加和删除,而不需要改变包含用户可以做出的选择的非可变NSDictionary。?< / p>

答案 2 :(得分:0)

我不确定我是否理解你的问题。

但是,如果您的数据具有树的“形状”,您可能会考虑以这种方式保存信息。

  • 您可以将词典放入词典
  • 您可以将数据放入CoreData并使用NSTreeController