致命错误:在展开可选值时意外发现 nil - 使用 UITableView

Posted

技术标签:

【中文标题】致命错误:在展开可选值时意外发现 nil - 使用 UITableView【英文标题】:fatal error: unexpectedly found nil while unwrapping an Optional value - using UITableView 【发布时间】:2015-07-22 00:50:17 【问题描述】:

我在视图控制器中使用 UITableView。

在 viewDidLoad 我有这个:

var PlayersUserDefault = NSUserDefaults.standardUserDefaults()
        if (PlayersUserDefault.arrayForKey("playersKey") != nil)
            players = PlayersUserDefault.arrayForKey("playersKey")
        

这段代码给了我错误:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return players!.count

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

我不明白这个,谁能帮帮我。抱歉,我的英语不太好。

【问题讨论】:

尝试打印players!.count 我猜它正在返回nil @Aladin - 是的。我该怎么办?当我尝试打开包含 UITableView 的视图控制器时出现错误。 可以分享players的声明 @Aladin - var player = NSUserDefaults().arrayForKey("playersKey") 我已将问题恢复为原始内容。从现在开始,请使用按钮提出新问题。我将您的新问题的内容保存在这里,因此您可以在提出新问题时复制并粘贴它:pastebin.com/zGT8AqjE 【参考方案1】:

问题是如果键不包含值,NSUserDefaults 返回 nil。 NSUserDefaults 方法如 objectForKeyarrayForKey 返回可选项。

如果键不存在,则返回 nil。

试试这个:

func tableView(tableView: UITableView, 
  numberOfRowsInSection section: Int) -> Int 

    return players?.count ?? 0

使用“nil 合并运算符”,如果它不是 nil,则返回值,或者 ?? 之后的值。如果它为零。

【讨论】:

谢谢,辛苦了!你能在上面检查我的新问题吗? 不要编辑您的原始问题来提出新问题。问一个新问题!很多人都在使用这个网站,他们认为过去问题的答案很有帮助。通过编辑您的原始问题,您会破坏该历史记录。另外,如果我的回答符合您的需要,请采纳。 (单击复选标记。)

以上是关于致命错误:在展开可选值时意外发现 nil - 使用 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 数据库 - 致命错误:在展开可选值时意外发现 nil

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

为啥我收到错误:致命错误:在展开可选值时意外发现 nil?

致命错误:在展开可选值时意外发现 nil - 使用 UITableView

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

致命错误:使用 AVAudio 展开可选值时意外发现 nil