【发布时间】:2015-01-16 17:47:07
【问题描述】:
我使用集合视图来显示存储在 CoreData 中的图像,只有几个(大约 15 个)但是当我向下滚动时它会滞后,这似乎是因为我没有异步获取我的数据,是否只有 15 个 UIImages ?
所以这是我的问题,我在任何地方都找不到关于异步获取的下降教程,我正在寻找 3 天。抱歉,如果我没有很好地搜索。
这与教程中的一些内容有关
let entity = NSEntityDescription.entityForName("Dreams", inManagedObjectContext: contxt)
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
let asyncFetch = NSAsynchronousFetchRequest(fetchRequest: fetchRequest) {
(result:NSAsynchronousFetchResult!) -> Void in
if result.finalResult!.count > 0 {
self.dreams = result.finalResult! as [Dream]
}
NSLog("Done.")
}
Dreams 是 [Dream] 类型的数组,但是当我显示集合视图时,什么也没有出现 我以前就是这样的
let fetchRequest = NSFetchRequest(entityName: "Dreams")
if let fetchResults = contxt.executeFetchRequest(fetchRequest, error: nil) as? [Dream] {
dreams = fetchResults
}
效果很好,
非常感谢您的帮助
【问题讨论】:
-
异步获取可能有帮助,但也许没有。这取决于您的代码的结构,因此异步可能是关键,也可能是浪费时间。例如,您在哪里执行这些提取?您是对每个图像进行单独提取,还是批量提取?图像实际上是存储在持久存储中还是外部文件中?
-
尽可能不要将图像存储在核心数据中,只存储图像名称和/或文件路径
-
现在我将图像作为 NSData 存储在 CoreData 中,我获取了视图中的图像确实加载了,不,我没有使用批处理,我会尝试你建议的内容(文件路径)
-
我也面临同样的问题,你找到了这个异步获取的任何解决方案,coredat。 @GauthierdeChezelles
标签: ios swift core-data asynchronous