Kingfisher nil 在展开可选值时

Kingfisher nil while unwrapping optional value

我有 Medicine 结构,其中包含 image_origin URL 我要下载并设置到 ImageView 的图像。 出于 downloading/caching 目的,我使用 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

在上面的代码中,mCoreDataNSManagedObject。我尝试从 CoreData 获取图像 URI 并将其设置为 ImageView,但每次在第 2 行我都会收到以下错误消息:Unexpectedly found nil while unwrapping an Optional value

我试过更改变量和 Optinal 类型,尝试硬编码 URI 但没有成功。

我做错了什么?

P.S。我正在使用 Swift4

如果您没有正确获取 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)
}

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)