从setEditing更改核心数据谓词



我的应用程序维护一个数据列表,其中一些行可能被用户隐藏。隐藏/显示按钮位于编辑面板中,通过将tableview置于编辑模式,然后选择要编辑的行来访问该编辑面板。这意味着在编辑模式下,所有行都需要显示,即使是那些通常隐藏的行;否则将无法取消隐藏它们。

我通过将fetchedResultsController设置为nil并在setEditing中重新加载表来实现这一点,然后修改为fetchedResultsController构建谓词的代码,以检查表是否处于编辑模式,如果是,则跳过排除隐藏列表的谓词部分。因此,当用户触摸编辑按钮时,表在进入编辑模式的过程中重新加载所有行,并在返回模式时重新加载只有未隐藏的行。

这个工作得很好,除了它已经杀死了通常在进入和退出编辑模式时看到的动画。额外的装填使它看起来很突兀。重载是在调用[super setEditing:animated]之前还是之后都没有区别。

有更好的方法或地方来做到这一点吗?

From: http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html

修改读取请求您不能简单地更改获取请求来修改结果。如果您想更改获取请求,您必须:

  1. 如果你正在使用缓存,删除它(使用deleteCacheWithName:)。通常情况下,如果要更改读取,则不应使用缓存请求。
  2. 修改获取请求
  3. 调用performFetch:

让您的CD对象包含一个可见性属性。进入编辑模式时,翻转所有隐藏单元格的属性。让fetchedResultsController的谓词包含visibility属性。如果您实现了回调,它将自动添加表格单元格。

最新更新