我有一个TableViewController显示元素CoreData关系的列表。在我的cellForRowAtIndexPath:中,我从集合中获取了一个sortedArray,然后访问indexPath.row中的元素。然后在didSelectRowAtIndexPath中,我正在做同样的事情。每次需要访问特定索引处的元素时,重新对数组进行排序可以吗?
这是否被认为是不好的做法?我发现一个理论上的危险,即如果我的排序方法在后续调用中返回一个不同排序的数组,即使用户单击了显示对象A的单元格,我也可能最终与对象B进行交互。不应该有可能我的排序返回一个不同的排序数组,但我仍然认为这在技术上是有风险的。
我知道这样做的唯一方法是让我的tableViewController保留它自己的NSArray成员,并且当它第一次加载时,通过排序集来填充数组。唯一的问题是,我将不得不单独维护集合和数组;修改,插入或删除任何时候用户改变的东西的对象。这是否被认为是在表格中显示CoreData元素的“正确”方式?
嗯,我只是花了半小时调试一个错误,这是因为我正在更新我的设置,然后期望我的sortedArray仍然反映我的tableView中的内容。所以我认为这非常证明你是对的。另外,虽然我并不十分关心性能(我的设置只包含6个元素),但当我必须经过几十次排序方法时,调试更加痛苦。 – GendoIkari 2010-12-03 21:05:47