在Swift中可选,返回数组的数量

com*_*ian 2 swift

帮助我在Swift中选择地狱.如何返回键"R"的数组计数.self.jsonObj可以为null

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
  return (self.jsonObj["R"]! as? NSArray)?.count;
}
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 10

让我们一步一步迈出这一步.

self.jsonObj可能是nil这样你需要将它视为可选:

self.jsonObj?["R"]

这将返回1)nilif self.jsonObjis nil或者如果"R"不是有效键或者与"R"相关联的值是nil2)某个类型的Optional包装对象.换句话说,你有一个未知类型的可选.

下一步是找出它是否是NSArray:

(self.jsonObj?["R"] as? NSArray)

这将返回一个Optional类型NSArray?,可能是nil出于上述原因,或者nil因为对象self.jsonObj是其他对象类型.

所以现在您有了一个可选的NSArray,如果可以的话打开它并打电话count:

(self.jsonObj?["R"] as? NSArray)?.count

如果由于NSArray上述原因存在或返回nil,则会调用count .换句话说,现在你有了Int?

最后,如果此时你可以使用nil coalescing运算符返回值或零nil:

(self.jsonObj?["R"] as? NSArray)?.count ?? 0