帮助我在Swift中选择地狱。如何返回键“R”的数组计数。 self.jsonObj
可以为null
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return (self.jsonObj["R"]! as? NSArray)?.count;
}
答案 0 :(得分:10)
让我们一步一步。
self.jsonObj
可能是nil
,因此您需要将其视为可选:
self.jsonObj?["R"]
如果nil
为self.jsonObj
或者" R"则会返回1)nil
不是有效的密钥,或者与" R"相关的值。是nil
2)某种类型的可选包装对象。换句话说,你有一个未知类型的可选。
下一步是找出它是NSArray
:
(self.jsonObj?["R"] as? NSArray)
由于上述原因或NSArray?
,这将返回nil
类型的可选项nil
,因为self.jsonObj
中的对象是其他对象类型。
现在您已经拥有了一个可选的NSArray,如果可以,请打开它并致电count
:
(self.jsonObj?["R"] as? NSArray)?.count
如果由于上述原因存在NSArray
或返回nil,则会调用计数。换句话说,现在你有一个Int?
最后,如果此时nil
有(self.jsonObj?["R"] as? NSArray)?.count ?? 0
,则可以使用 nil coalescing operator 返回值或零;
{{1}}
答案 1 :(得分:2)
如果数组中没有任何内容,我猜你会想要返回0
。在这种情况下,请尝试Nil Coalescing Operator:
return (self.jsonObj?["R"] as? NSArray)?.count ?? 0;
修改:@ vacawama的回答指出,如果self.jsonObj?["R"]
为self.jsonObj["R"]!
,则应为self.jsonObj
而不是nil
的
答案 2 :(得分:0)
假设self.jsonObj
为NSDictionary?
或Dictionary<String, AnyObject>?
return self.jsonObj?["R"]?.count ?? 0