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...
}
我不知道如果我正确理解你的问题。
但是,如果您的数据具有树的“形状”,则可以考虑以这种方式保存信息。
- 你可以把字典你的字典里
- 你可以把你的数据在CoreData和使用NSTreeController
母舰一样需要是可变的,如果它包含用户在运行时进行选择? – Matt 2011-05-26 21:50:31
@Matt,是的,这是正确的。 – 2011-05-26 21:50:59