我正在开发一个UITableview,它具有一定数量的总行数,其中一些行根据用户操作插入和删除。我无法确定哪种方式最有效地实施此操作。我有两个想法都有效,但实施起来并不是很干净。他们是:
1)向被调用的数据(shownInTable)添加一个布尔值,并在插入时将shownInTable设置为YES,删除时设置为NO。
我对这个方法的问题是,当tableView要求分区行计数或单元格时,我必须遍历数组,检查当前显示的数据。
2)创建2个数组,一个包含所有数据作为参考,一个可变,仅包含显示的数据。将可变数组中的数据提供给表。使用引用数组来获取要插入到可变数组中的数据,然后根据需要从可变数组中删除。
我遇到的问题是它需要一个很长的设置过程,创建两个数组。 I.E.如果有10个可能的数据行......则创建10个对象并将其放入参考数组中,并将5个复制并放入可变数组中。
是否有更好的方法可以跟踪这些数据进出表格时的情况?
谢谢!
答案 0 :(得分:1)
当您将同一个对象放在两个数组中时,对象不会重复,它们只会被引用两次 所以,在大多数情况下,第二种方法是正确的。
例如,如果过滤器的目标是搜索,则可以创建第一个数组,然后使用带谓词的过滤器创建第二个数组,以加快创建过程。
例如,您有一个对象数组(在此示例中为:活动数组),并且只想显示包含“编程”的活动
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(activityName CONTAINS[cd] %@)", @"programming"]; // activityName is the @property that you want to apply the filter to
NSMutableArray *arrayToShow = [[firstArray filteredArrayUsingPredicate:predicate] mutableCopy];