为了账号安全,请及时绑定邮箱和手机立即绑定

致命错误:在展开可选值时意外找到零

致命错误:在展开可选值时意外找到零

当年话下 2019-07-09 13:33:06
致命错误:在展开可选值时意外找到零我用的是UICollectionView但当我试图改变细胞标签的文字时,我就明白了。    func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int{     return 5}func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell!{     var cell = collectionView.dequeueReusableCellWithReuseIdentifier("title", forIndexPath: indexPath) as TitleCollectionViewCell     // Next line: fatal error: unexpectedly found nil while unwrapping an Optional value    cell.labelTitle.text = "This is a title"     return cell}有人知道这件事吗?
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

几乎可以肯定的是,您的重用标识符"title"是不正确的。

我们可以从UITableView.h方法签名dequeueReusableCellWithIdentifier返回类型为隐式解封可选:

func dequeueReusableCellWithIdentifier(identifier: String!) -> AnyObject! // Used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.

这是由后面的感叹号决定的AnyObject:

    AnyObject!

那么,首先要考虑的是,什么是“隐式解包可选”?

SWIFT编程语言告诉我们:

有时,从程序的结构中可以清楚地看到,在第一次设置该值之后,可选项总是有一个值。在这些情况下,每次访问可选值时都需要检查和打开它,因为可以安全地假定它一直都有一个值。

这类选项被定义为隐式展开选项。您可以通过放置感叹号(字符串!)来隐式地编写未包装的可选项。而不是问号(字符串?)在要选择的类型之后。

所以,基本上,在某一点上可能是零的,但从某一点开始,它就不再是零了。因此,我们把它作为未包装的值,省去了一些麻烦。

在这种情况下dequeueReusableCellWithIdentifier返回这样的值提供的标识符必须已用于注册单元以便重用。提供一个不正确的标识符,去队列找不到它,运行时返回一个不应该发生的零。这是一个致命的错误,应用程序崩溃,控制台输出提供:

fatal error: unexpectedly found nil while unwrapping an Optional value

底线:检查.storyboard、XIB或代码中指定的单元重用标识符,并确保它在退出队列时是正确的。


查看完整回答
反对 回复 2019-07-09
?
大话西游666

TA贡献1817条经验 获得超14个赞

您可以通过安全地展开包装来防止崩溃的发生。cell.labelTitle带着if let声明。

if let label = cell.labelTitle{
    label.text = "This is a title"}

但是,您仍然需要进行一些调试,以了解为什么要在那里获得一个零值。


查看完整回答
反对 回复 2019-07-09
?
BIG阳

TA贡献1859条经验 获得超6个赞

检查该单元格是否正在注册。self.collectionView.registerClass(cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String)..如果是,那么删除这一行代码。

有关更多信息,请参见此答案:为什么UICollectionViewCell的出口为零?

“如果你使用的是故事板,你不想叫它。它会覆盖你的故事板。”


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 691 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信