【发布时间】:2016-06-06 18:56:28
【问题描述】:
我在 Core Data 中有一张图片。它必须保存为 NSData,并且我有一个计算属性来获取和设置基于 Core Data 属性imageData 的图像:
var image: UIImage? {
get {
if let imageData = imageData {
return UIImage(data: imageData)
} else {
return nil
}
}
set {
if let image = image {
imageData = UIImagePNGRepresentation(image)
} else {
imageData = nil
}
}
}
但是,我相信每次获取图像时,这段代码都会在UIImage 和NSData 之间转换,因为这些数据用于填充UITableViewCell,所以这种情况经常发生。这是真的,还是 Xcode 足够智能以某种方式缓存计算属性?另外,这是从 Core Data 获取图像的推荐方式,还是建议提取一次并将其保存到这样的新属性中(不确定此代码是否正确):
lazy var image: UIImage? = {
if let imageData = imageData {
return UIImage(data: imageData)
} else {
return nil
}
}()
我看到的最后一个的缺点是可以在不更新image 的情况下更改imageData。我也不确定是否可以在后一个版本中使用didSet 来更新Core Data。
【问题讨论】:
-
look at this git repo 它在表格中显示来自 CoreData 的图像。它是异步的,不会获取单元格中的图像,而是以单独的方法获取。 how to : images & coredata
标签: ios swift core-data uiimage nsdata