与这个问题有些相关。所以,我有两个 NSMutableDictionaries。DictA 是原始数据,而 DictB 将是 UITableVIew 从中获取数据的数据。如果用户过滤某些东西,我可以删除 DictB 中不应该显示的所有对象,然后调用 [table reloadData] 并且工作正常,实现如下:
NSMutableDictionary filterSelection = [DictA objectForKey:what the user picked];
[dictB removeAllObjects];
dictB = filterSelection;
[table reloadData];
这将使 UITableView 仅显示用户过滤的内容。
这是问题开始的地方:
- 如何将所有数据“刷新”回 DictB,以便用户可以做出新的选择?即 DictB = DictA (显然,由于引用类型,这将不起作用,只需将其放在那里以表明我需要将所有数据重新过滤一遍)。这在任何情况下都不起作用,因为从 dictB 中删除所有对象会从 dictA 中删除所有内容,因为它们引用了内存中的相同对象。
欢迎提出任何建议,我觉得我的想法是正确的,只是在执行过程中迷失了方向。