0

我正在开发一个总行数固定的 UITableview,其中一些会根据用户操作插入和删除。我无法决定哪种方式最有效地实施此操作。我有两个想法都有效,但不是很干净的实现。他们是:

1) 向名为 (shownInTable) 的数据添加一个布尔值,并在插入时将 shownInTable 设置为 YES,在删除时设置为 NO。

这种方法的问题是,当 tableView 要求部分行数或单元格时,我必须遍历数组,检查当前显示的数据。

2) 创建 2 个数组,一个包含所有数据作为参考,一个可变数组仅包含显示的数据。将可变数组中的数据提供给表。使用引用数组获取要插入可变数组的数据,然后根据需要从可变数组中删除。

我遇到的问题是它需要一个很长的设置过程,创建两个阵列。IE 如果有 10 行可能的数据...创建 10 个对象并将其放入引用数组中,并复制 5 个对象并将其放入可变数组中。

有没有更好的方法来跟踪这些数据进出表?

谢谢!

4

1 回答 1

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];
于 2013-09-02T17:50:53.503 回答