gpt4 book ai didi

ios - 解包可选值时意外发现 nil,但有一些值

转载 作者:行者123 更新时间:2023-11-28 10:21:04 25 4
gpt4 key购买 nike

我正在尝试执行 GET 请求,并将以下结果保存到 NSMutuableArray 中。然后我尝试将我进入的以下数据加载到 TableView 中,但每当我尝试配置行数时,我都会收到“在展开可选值时意外发现 nil”。

var dataArray:NSMutableArray?

Alamofire.request(.GET, "SOMERANDOMWEBSITE") .responseJSON { response in
// using if-let syntax to save json into our NSMutuableArray
if let JSON = response.result.value {
self.dataArray = JSON as? NSMutableArray
}
}

当我尝试配置行数时:

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows

return self.dataArray.count
}

它给了我一个错误:“在展开可选值时意外发现 nil”。但奇怪的是,当我创建一个随机按钮以查看 .count 是否确实为 nil 时:

    @IBAction func function(sender: AnyObject) {
print(self.dataArray?.count)
}

它返回 Optional(2) 而不是 nil。有什么想法吗?

最佳答案

您将数组设为可选。我们可以在这里看到:

print(self.dataArray?.count)

所以直到它被填充到 Alamofire 的闭包中(网络请求发生在后台),它是 nil。

你引用:

return self.dataArray.count

但实际上你可能已经做到了

return self.dataArray!.count

这就是它崩溃的原因。

因此当它为 nil 时,您必须为计数声明另一个选项。一个解决方案可能是安全地解包数组然后返回计数或返回默认值:

if let array = self.dataArray {
return array.count
}
return 0

同样的逻辑可以在一行中表达,@brian-nickel 在评论中指出:

return self.dataArray?.count ?? 0

此外,正如@vadian 在评论中所述,绝对地,可选数组在这里毫无意义,最好从一开始就使用一个非可选的空数组。

关于ios - 解包可选值时意外发现 nil,但有一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com