IOS swift 如何在获取 Json 数据时检查空数组

标签 ios arrays swift swift3 anyobject

我是 swift 的新手,在我的代码中,我从某封电子邮件中获取 JSON,JSON 数据首先在 swift 中放入数组,但是如果数组为空或没有 Json 数据,我会收到此错误

Could not cast value of type 'NSNull' (0x1067a5748) to '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 为空,我会在此处收到此行的错误

if let musicJob = parsedData["music"] as! [AnyObject]?

musicJob 计算对象的数量,例如“30 个值或 44 个值”等。如果没有 Json,则返回 nil 并崩溃。 无论如何,我是否可以捕获 nil 或空数组的值,以便应用程序不会崩溃?同样,只要 musicJob 数组不为空,一切正常。

最佳答案

试试这个:

if let musicJob = parsedData["music"] as? [AnyObject]

关于IOS swift 如何在获取 Json 数据时检查空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40756199/

相关文章:

c - 在数组中输入随机数时出错

javascript - 如何使用递归将元素插入数组中的所有位置?

ios - 在 swift 扩展中重载 NSDictionary getter

c++ - 在 iOS 中使用 std::atomic

ios - Swift:从接口(interface)类型数组转换为对象数组崩溃

iOS UITableView 正在绘制奇怪的单元格

javascript - 范围错误 : invalid array length

ios - Swift Static TableView 添加额外的行

ios - 禁用将拍摄或选择的图像保存到相机胶卷

ios - 由于某种原因,在 xCode 上,它在我的模拟器侧面显示了一条细白条。