Доступ к внутренним папкам в папке Assets - PullRequest
0 голосов
/ 05 февраля 2020

У меня в папке Assets.xcassets есть следующие папки

снимок экрана с ошибкой - извините, у меня недостаточно повторений для отображения изображения

Я пытаюсь получить доступ к папке ca, затем payments, а затем к изображениям внутри, чтобы заполнить UICollectionViewCell. Ради теста я принудительно распаковываю его (я знаю, что это небезопасно):

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CellId, for: indexPath) as! MyCollectionViewCell

cell.paymentImageView.image = UIImage(named: "logos/ca/payments/x.png")!
return cell

Я получаю крэ sh, и он говорит:

Фатальная ошибка : Неожиданно обнаружил nil при развертывании необязательного значения: file

Я не уверен, почему происходит сбой, файлы есть. Является ли проблемой то, что для каждой страны существует несколько повторяющихся имен файлов в разных папках? Ie xyz.png также может быть в файлах CA / платежей и де / платежей

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Это cra sh, потому что вы пытаетесь принудительно развернуть необязательное значение.

UIImage(named: "logos/ca/payments/x.png") является необязательным значением. Incase изображение не существует в вашем проекте, это будет ноль.

И нам не требуется указывать путь при получении изображения, только только имя изображения и файл расширения, например UIImage(named: "x.png")

Также cell.paymentImageView.image может принять ноль изображения. Так что эта строка только cell.paymentImageView.image = UIImage(named: "x.png") будет окей.

Надеюсь, эта помощь!

0 голосов
/ 05 февраля 2020

Полный путь не требуется для изображений. Вместо этого используйте только имя (если вы добавили изображение напрямую)

cell.paymentImageView.image = UIImage(named: "x.png")!

, если вы используете .xcassets. используйте имя набора изображений вместо отдельного изображения

cell.paymentImageView.image = UIImage(named: "<IMAGE_SET_NAME>")!
...