NSMutableDictionary的替代品?

问题描述:

我有3个NSMutableDictionaries为3个独立的UITableViews保存数据。当从一个UITableViews检查一个值时,我想要保存该值,这取决于从不同表中检查的不同值,我可以在下一页生成一个答案。我想也许我可以创建一个新的NSMutableDictionary,它具有所有可能的选择,然后当用户点击复选框时,告诉我的newNSMutableDictionary该值已被选中。但我认为它不是那种方式,因为它是一个重要的价值配对。我想知道是否有替代方案,或者是否有人持有这些信息的好方法?谢谢。NSMutableDictionary的替代品?

为什么不把所有可能的选择存储在NSDictionary中,用用户可以做出的所有选择来初始化它。当用户进行选择时,将该项目添加到“selectedItems”NSMutableDictionary中。这样,你的NSMutableDictionary(包含选择)将只有选中的项目,你可以添加和从这个字典中删除,而不需要改变包含用户可以选择的非可变NSDictionary。

而不是这样做,你可以尝试有一个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

我不知道如果我正确理解你的问题。

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

  • 你可以把字典你的字典里
  • 你可以把你的数据在CoreData和使用NSTreeController