可选链接返回Int

ban*_*isa 2 optional ios swift optional-chaining

这是我如何返回表视图的行数:

public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if let dataCount = self.data?.count {
        return dataCount
    } else {
        return 0
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想使用可选链接使其更简洁......但编译器对我的代码不满意.我试试这个:

return self.data?.count
Run Code Online (Sandbox Code Playgroud)

并且它抱怨计数是Int类型?我应该强行打开它,所以我这样做:

return self.data?.count!
Run Code Online (Sandbox Code Playgroud)

并且它抱怨count是Int类型.使用可选链接,如果数据不是nil,它应该只得到计数,如果数组不是nil,那么我知道count将返回ok.

我错过了什么?谢谢

Mar*_*n R 7

这是范围问题:

return (self.data?.count)!
Run Code Online (Sandbox Code Playgroud)

或者可选择链接

return self.data?.count ?? 0
Run Code Online (Sandbox Code Playgroud)

如果self.datanil,则计算结果为零,而第一种解决方案在这种情况下会抛出运行时异常.