我有一个问题。我已经在核心数据中保存了图像。我有一个TableView
并且在该表的每个单元格中都有一个图像,它从核心数据加载。
以下是代码。
在我的代码的这一部分中,我获取了每个单元格的图像数据
if let img = CoreDataFunctions.loadImageFromCache(imgURL){
cell.PersonImage?.image = UIImage(data:img)
}
CoreDataFunctions.loadImageFromCache
方法
class func loadImageFromCache(selfiePath:String?) -> NSData? {
let managedObjectContext: NSManagedObjectContext = AppDelegate().managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Images")
fetchRequest.predicate = NSPredicate(format: "selfie == %@", selfiePath!)
if let fetchResults = try! managedObjectContext.executeFetchRequest(fetchRequest) as? [Images] {
if fetchResults.count == 1 {
return fetchResults[0].imageData
}
}
return nil
}
当我完成图像的加载时,内存使用率变得过高并保持在该位置。任何人都可以告诉我原因???
答案 0 :(得分:1)
1)使用NSFetchedResultsController
在表格视图中显示图像。然后,您将拥有明显更低的内存占用。您还可以消除昂贵的获取方法。
2)在模型编辑器中检查数据属性的“外部存储”,以确保图像实际上没有存储在数据库中。或者,设计自己的存储/命名方案并将图像存储在应用程序文档目录中。