【问题标题】:fatal error: unexpectedly found nil while unwrapping an Optional value - using UITableView致命错误:在展开可选值时意外发现 nil - 使用 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

标签: swift


【解决方案1】:

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

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

试试这个:

func tableView(tableView: UITableView, 
  numberOfRowsInSection section: Int) -> Int 
{
    return players?.count ?? 0
}

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

【讨论】:

  • 谢谢,辛苦了!你能在上面检查我的新问题吗?
  • 不要编辑您的原始问题来提出新问题。问一个新问题!很多人都在使用这个网站,他们认为过去问题的答案很有帮助。通过编辑您的原始问题,您会破坏该历史记录。另外,如果我的回答符合您的需要,请采纳。 (单击复选标记。)
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2020-09-19
  • 2016-01-08
相关资源
最近更新 更多