【问题标题】:Fatal error: Unexpectedly found nil - when creating a UIImage [duplicate]致命错误:意外发现 nil - 创建 UIImage 时 [重复]
【发布时间】:2018-10-20 14:53:11
【问题描述】:

我收到以下错误:

线程 1:致命错误:在展开可选值时意外发现 nil

请不要将其标记为重复,我知道 Optionals 和展开它们是什么。

  1. 此错误出现在第 9 行。
  2. 当应用程序运行并且我执行 segue 时发生错误。

代码:

 @IBOutlet weak var rewardVideoImage: UIImageView!

 let arrayOfPhotos = ["photo1", "photo2", "photo3"]
 var randomImageIndex : Int = 0

 func selectImage() {
    randomImageIndex = Int(arc4random_uniform(3))

    rewardVideoImage.image = UIImage(named: arrayOfPhotos[randomImageIndex])
    print(randomImageIndex)
 }

 override func viewDidLoad() {
    super.viewDidLoad()
    selectImage()
 }

【问题讨论】:

  • if let 解开UIImage(named: arrayOfPhotos[randomImageIndex]) 以查看图像是否存在。
  • 我认为rewardVideoImage 是nil,你确定它连接正确吗?
  • @user770 图像属性是可选的,因此无需打开结果。 developer.apple.com/documentation/uikit/uiimageview/…
  • 不知道if let 叫什么。也许不是“展开”,但显然使用的图像名称不正确,或者类似的东西。我正在尝试让 OP 进行检查。
  • 我是说设置属性为nil不会报错

标签: swift swift4


【解决方案1】:

据我所知,这里有两件事可能会导致可选问题:

  1. 确保您的资产目录中有名为“photo1”、“photo2”、“photo3”的图片。

  2. 确保您的故事板正确引用了您的UIImageView

【讨论】:

  • 所有仔细检查都很好。
【解决方案2】:

arc4Random 不是这里的问题,这是您的IBOutlet,因为 nil 图像不会导致崩溃。

rewardVideoImage 为零,您需要在情节提要中连接它。

【讨论】:

  • AFAIK,尝试访问未连接到情节提要的属性甚至无法构建。
  • 啊,谢谢你的信息。所以我使用if let 的建议毕竟不是那么好:)
  • @JamesP 已经连接到情节提要
  • @Callum9966 也许您应该展示如何创建和推送 viewController。从您显示的代码中,rewardVideoImage 为零是唯一的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多