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
在上面的代码中,m
是 CoreData
的 NSManagedObject
。我尝试从 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)
我有 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
在上面的代码中,m
是 CoreData
的 NSManagedObject
。我尝试从 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)