У меня есть структура Medicine
, содержащая image_origin
URL-адрес изображения, которое я хочу загрузить и установить в ImageView. Для загрузки/кеширования я использую Kingfisher
framework.
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
. Я пытаюсь получить URI изображения из CoreData и установить его в ImageView, но каждый раз в строке 2 я получаю следующее сообщение об ошибке: Unexpectedly found nil while unwrapping an Optional value
Я пытался изменить переменные и оптические типы, пытался жестко закодировать URI, но безуспешно.
Что я делаю не так?
P.S. Я использую Swift4
value(forKeyPath
? Ключевого пути нет. Чтобы получить значение атрибута CoreData, используйтеvalue(forKey:
или, что удобнее, запись через точку в подклассеNSManagedObject
. - person vadian   schedule 22.07.2018forKeyPath
только для одноуровневого ключа. - person vadian   schedule 22.07.2018NSObjectProtocol
. Прочтите документацию по NSManagedObject. Специальный метод для получения значения одноуровневого ключа —value(forKey
. Ключевой путь — это что-то вроде"person.age"
. Конечно,value(forKeyPath
работает, но дороже, потому что он пытается разделить и оценить каждый компонент пути. - person vadian   schedule 22.07.2018