【发布时间】:2018-02-11 23:30:11
【问题描述】:
我是 iOS 开发的新手,我在处理核心数据获取请求时遇到了一些问题。我正在使用 Xcode 9-beta 和 swift 4。
每当我更新我的数据库时,我都会使用 fetch 请求加载新数据,以进行一些计算并填充表格视图。
我面临的挑战是,每次我对实体执行获取请求时,我都会得到相同的数据,即使它发生了变化。在我看来,这是在重用来自先前获取请求的数据,因为如果我关闭应用程序并再次打开它,它会向我显示新存储的数据。
这是我的代码:
if let context = container?.viewContext {
context.perform {
let request: NSFetchRequest<EntityName> = EntityName.fetchRequest()
let data = try? context.fetch(request)
self.data = data!
self.setUI()
}
}
我从以下位置获取容器:
let container: NSPersistentContainer? = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer
我给出了一些通用名称,因为我认为这与问题无关。
有什么想法吗?
谢谢, 杰伦
【问题讨论】:
-
您是否收到任何错误或控制台输出?
-
Fetch 请求永远不会被重用。也许您在更改数据后忘记保存上下文。顺便说一句:持久容器和托管对象上下文应该是非可选的,
AppDelegate是强制性的,否则应用程序将无法启动。强行拆开物品并不是什么坏事:let container = (UIApplication.shared.delegate as! AppDelegate).persistentContainer -
我没有在控制台中收到任何错误。每次更改数据时,我都会保存上下文。
标签: ios swift core-data nsfetchrequest