我是 iOS 开发的新手,我在获取核心数据请求时遇到了一些问题。我正在使用 Xcode 9-beta 和 swift 4。
每当我更新数据库时,我都会通过获取请求加载新数据,进行一些计算并填充表格 View 。
我面临的挑战是,每次我为一个实体发出提取请求时,我都会得到相同的数据,即使它发生了变化。在我看来,这是在重复使用之前获取请求中的数据,因为如果我关闭应用程序并再次打开它,它会显示新存储的数据。
这是我的代码:
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
我给出了一些通用名称,因为我认为这与问题无关。
有什么想法吗?
谢谢, JL
最佳答案
如果您没有收到任何错误。可能是因为更改后你没有保存上下文
你确定是你做的吗?
此方法可帮助您在更改后立即保存上下文
private func saveContext() {
guard managedObjectContext.hasChanges else {
return
}
do {
try managedObjectContext.save()
} catch {
abort()
}
}
尝试在AppDelegate
中找到它
更新:
也有可能是因为.perform
是异步的,你更新数据后,还没有保存。
asynchronously performs the block on the context's queue. Encapsulates an autorelease pool and a call to processPendingChanges
关于ios - 核心数据获取请求问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024981/