我有Medicine
结构,该结构包含要下载并设置为ImageView的图像的image_origin
的URL。
为了进行下载/缓存,我使用了Kingfisher
框架。
let m = medicines[indexPath.row]
cell.medicineImage.kf.setImage(with: URL(string: m.value(forKeyPath: "image_origin") as! String)!)
cell.medicineName.text = m.value(forKeyPath: "i_name") as? String
在m
上方的代码中,是NSManagedObject
中的CoreData
。我尝试从CoreData获取图像URI并将其设置为ImageView,但是每次在第2行时,我都会收到以下错误消息:Unexpectedly found nil while unwrapping an Optional value
我尝试更改变量和Optinal类型,尝试对URI进行硬编码,但没有成功。
我在做什么错?
P.S。我正在使用Swift4
答案 0 :(得分:2)
只需安全地解开包装即可解决崩溃问题,并检查数据库是否正确获取了urlString
,
if let urlString = m.value(forKeyPath: "image_origin") as? String {
print(urlString)
guard let url = URL(string: urlString) else { return }
cell.medicineImage.kf.setImage(with: url)
}
答案 1 :(得分:1)
image_origin
键可能存在问题,我可能具有字符串值,也可能没有。因此,只需确认该值并使用它即可。
let m = medicines[indexPath.row]
cell.medicineName.text = m.value(forKeyPath: "i_name") as? String
guard let urlPath = m.value(forKeyPath: "image_origin") as? String, let url = URL(string: urlPath) else { return }
cell.medicineImage.kf.setImage(with: url)