调用核心数据时的高内存使用率

时间:2015-11-06 10:02:30

标签: ios swift core-data

我有一个问题。我已经在核心数据中保存了图像。我有一个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
    }

当我完成图像的加载时,内存使用率变得过高并保持在该位置。任何人都可以告诉我原因???

1 个答案:

答案 0 :(得分:1)

1)使用NSFetchedResultsController在表格视图中显示图像。然后,您将拥有明显更低的内存占用。您还可以消除昂贵的获取方法。

2)在模型编辑器中检查数据属性的“外部存储”,以确保图像实际上没有存储在数据库中。或者,设计自己的存储/命名方案并将图像存储在应用程序文档目录中。