我在覈心數據中有一個圖像。它保存爲NSData的,我有一個計算的屬性基於Core Data屬性imageData
來獲取和設置圖像:核心數據和UIImage的性能
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足夠聰明,以某種方式緩存計算的屬性?此外,這是從核心數據獲取圖像的推薦方式,或推薦給一次獲取它並將其保存到一個新的屬性這樣的(不確定的,如果這個代碼是正確的):
lazy var image: UIImage? = {
if let imageData = imageData {
return UIImage(data: imageData)
} else {
return nil
}
}()
的缺點我看到的最後一個是,如果不更新image
,將有可能更改imageData
。我也不確定我是否可以在後一版本中使用didSet
來更新核心數據。
[看看這個git回購](https://github.com/romainmenke/SimpleCam)它從一個表中顯示來自CoreData的圖像。它是異步的,並不會獲取單元格中的圖像,而是以單獨的方法獲取圖像。 [如何:圖像&coredata](http://stackoverflow.com/questions/27995955/saving-picked-image-to-coredata/27996685#27996685) –