翠鸟为零,同时展开可选值

时间:2018-07-21 20:12:42

标签: ios swift xcode core-data kingfisher

我有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

2 个答案:

答案 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)