ios - 核心数据更改是否反射(reflect)在本地 NSManagedObject 子类变量中?

标签 ios swift core-data nsmanagedobject

我正在使用 NSFetchResultsController 来填充 UITableView。 TableView 填充了我的“联系人”NSManagedObject 子类。选择其中一个表格单元格后,我会将所选联系人传递给目标 View Controller :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == kChatSegue {
        if let controller = segue.destinationViewController as? ChatViewController {
            if let theSelectedContact = self.selectedContact {
                controller.contact = theSelectedContact
            }
        }
    }
}

正如您从上面的代码中看到的,ChatViewController 有一个本地变量,用于保存选定的联系人。

现在问题来了。当在应用程序的其他地方对特定联系人对象进行更改并保存到托管对象上下文时,更改不会准确反射(reflect)到 ChatViewController 的本地 contact var。对 NSManagedObject 的更改是否会反射(reflect)在该对象的本地变量中?如果不是,我如何强制更新 var 以反射(reflect)当前保存的值?

最佳答案

托管对象不会自动反射(reflect)对底层持久存储所做的更改。一旦获取,它们就会保持其状态,直到您更改它为止。这通常是一件好事 - 例如,您不希望未保存的更改被意外删除。

如果您想强制一个副本加载其他地方所做的更改,请在 NSManagedObjectContext 上使用 refreshObject(:,mergeChanges:),并将第二个参数设置为 。这将告诉上下文重新加载对象的数据以反射(reflect)当前保存的状态。您可以观察 NSManagedObjectContextDidSaveNotification 以了解何时可能需要加载更改。

关于ios - 核心数据更改是否反射(reflect)在本地 NSManagedObject 子类变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068711/

相关文章:

ios - UITabBar 自定义背景图像应用于一个 View Controller 而不是 AppDelegate

ios - 为什么隐藏状态栏会完全破坏我的简单动画?

android - iOS 和 Android 应用程序的最大大小

swift - 通过触摸按钮移动 SKSpriteNode

swift - 将来自 API 的解码数据用于算法

ios - 不同tableView部分的核心数据对象

core-data - Swiftui - 环境对象更改不会更新 UI

ios - 你能在不同的应用程序之间共享 CloudKit 上的数据吗

ios - 以编程方式通过内容的摘要高度设置 uiview 高度,并将其添加到容器并调整其大小

ios - 如何使用 Swift3 访问 CoreData 中的数据索引