【问题标题】:Alternatives to NSMutableDictionary?NSMutableDictionary 的替代品?
【发布时间】:2011-05-26 21:44:42
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c uitableview nsmutabledictionary


    【解决方案1】:

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

    或者,更好的是,有一个NSMutableDictionary,其中一个键是包装在NSNumber 中的特定tableview 的tag,值是选定索引路径的NSMutableArray

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

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

    【讨论】:

    • 如果它包含用户在运行时所做的选择,它是否需要是可变的?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我不确定我是否正确理解了您的问题。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 2012-01-25
        • 2015-08-05
        • 2011-01-01
        • 2011-10-24
        • 2011-05-31
        相关资源
        最近更新 更多