- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 NSFetchedResultsController 和 DATAStack .如果我在其他上下文中进行任何更改,我的 NSFetchedResultsController 不会更新我的表。
我在我的 NSFetchedResultsController 中使用 dataStack.mainContext
。如果我从 mainContext 做任何更新,一切都很好。但是,如果我编写这样的代码:
dataStack.performInNewBackgroundContext({ (backgroundContext) in
// Get again NSManagedObject in correct context,
// original self.task now in main context
let backTask = backgroundContext.objectWithID(self.task.objectID) as! CTask
backTask.completed = true
let _ = try? backgroundContext.save()
})
NSFetchedResultsController 不更新单元格。例如,如果我重新加载应用程序或整个 View ,我将看到更新的数据。
数据保存没有错误(我已经检查过了)。
我尝试检查是否收到了 NSManagedObjectContextDidSaveNotification,但如果我在收到通知后执行 .performFetch(),我会再次在表中获取旧数据。
最佳答案
终于搞定了,不是上下文问题。
如果 NSFetchedResultsChangeType
是 Move,我在 NSFetchedResultsControllerDelegate
的 didChangeObject
函数中使用了这种类型的代码(即事件是由于排序而生成的,我认为):
guard let indexPath = indexPath, newIndexPath = newIndexPath else { return }
_tableView?.moveRowAtIndexPath(indexPath, toIndexPath: newIndexPath)
这是不正确的(我不知道为什么 NSFetchedController 在数据更改时生成移动事件而没有“重新加载数据事件”),我用下一个代码替换了它,现在一切正常。
guard let indexPath = indexPath, newIndexPath = newIndexPath else { return }
_tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
_tableView?.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: UITableViewRowAnimation.Fade)
关于swift - NSFetchedResultsController 不从后台上下文(DATAStack)更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397326/
我有一个应用程序,其中已经具有工作核心数据和持久存储功能。我想使用DATAStack在此应用程序中,但我无法让它工作。 如果没有 DATAStack,我的 AppDelegate 中就有所有这些标准核
我正在使用 NSFetchedResultsController 和 DATAStack .如果我在其他上下文中进行任何更改,我的 NSFetchedResultsController 不会更新我的表
我正在使用 Sync from HyperOslo我得到一个简单的 JSON 对象: 打印的 json 对象(用户)=> [{ email = "email@email.fr"; na
我是一名优秀的程序员,十分优秀!