【问题标题】:Accessing inner folders in Assets folder访问 Assets 文件夹中的内部文件夹
【发布时间】:2020-02-05 10:06:18
【问题描述】:

我的Assets.xcassets 文件夹中有以下文件夹

screenshot of the error - sorry, i dont have enough rep to show the image

我正在尝试访问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

我遇到了崩溃,上面写着:

致命错误:在展开可选值时意外发现 nil:文件

我不确定它为什么会崩溃,文件在那里。对于每个国家/地区的不同文件夹中都有多个重复的文件名,这是一个问题吗?即 xyz.png 也可能在 ca/payments 和 de/payments 中

【问题讨论】:

  • 尝试删除路径logos/ca/payments/只放imageName.png

标签: ios swift uicollectionview uicollectionviewcell


【解决方案1】:

此崩溃是因为您尝试强制展开可选值。

UIImage(named: "logos/ca/payments/x.png") 是可选值。如果您的项目中不存在图像,则该图像为零。

我们在获取图片时不需要放置路径,只需要图片名称和扩展文件,如UIImage(named: "x.png")

cell.paymentImageView.image 也可以接受 nil 图像。所以这条线只有cell.paymentImageView.image = UIImage(named: "x.png") 可以。

希望对您有所帮助!

【讨论】:

  • 我明白了!谢谢解释
【解决方案2】:

图像不需要完整路径。仅使用名称(如果您直接添加图像)

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

如果您使用的是 .xcassets。使用图像集的名称而不是单个图像

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

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 2015-03-09
    • 1970-01-01
    • 2018-09-29
    • 2012-01-06
    • 2013-02-03
    • 2019-01-15
    相关资源
    最近更新 更多