【发布时间】:2016-11-23 04:43:18
【问题描述】:
我对 swift 非常陌生,在我的代码中,我从某封电子邮件中获取 JSON,JSON 数据首先被放入 swift 的数组中,但是如果数组为空或没有 Json 数据,我会收到此错误
无法将“NSNull”(0x1067a5748)类型的值转换为“NSArray”(0x1067a4c58)。
我一直试图通过阅读其他帖子(例如 Check if optional array is empty)来解决此问题,但它不起作用。问题出现在下面的代码中
session.dataTask(with:request, completionHandler: {(data, response, error) in
if error != nil {
print(error)
} else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]
if let musicJob = parsedData["music"] as! [AnyObject]? {
for S in musicjob {
if let genre = S["genre"] as? String {
self.genres.append(genre)
}
}
}
如果 Json 为 null,我会在此处收到此行的错误
if let musicJob = parsedData["music"] as! [AnyObject]?
musicJob 统计对象的数量,例如“30 个值或 44 个值”等。如果没有 Json 则返回 nil 并崩溃。 我是否可以捕获 nil 或空数组的值,以使应用程序不会崩溃?只要 musicJob 数组不为空,一切正常。
【问题讨论】:
-
想一想强制将可选项展开为可选项 (
as! [AnyObject]?) 的含义。除此之外,Swift 3 中未指定的 JSON 类型始终为Any而不是AnyObject。
标签: ios arrays swift swift3 anyobject