为什么我无法获取 NSArray 的值?总是 return nil value.Swift 4.3

Why i can't get the value of NSArray? It's always return nil value.Swift 4.3

我想获取NSArray的值,但它总是给我nil值,有人知道如何解决吗?

它是由swift 4.2

创建的

KCNetWorkTool.tool.getRecordListWith(UserID: userID, Date: dateLabel.text!) { (result) in

            SVProgressHUD.dismiss()
            if let dict = result.data as NSDictionary? {
// the value of this below line, i cann't get . array always return nil
                if let array = (dict["list"] as? NSMutableArray) {
                    let countArray = array.count
                    for index in 0..<countArray {
                        if let dictNew = array[index] as? NSDictionary {
                            let row = EnvelopeModel(dictionary: dictNew)
                            self.recordModel.append(row)
                        }
                    }
                }
            }
            self.recordTable.reloadData()
        }
    }

你的大部分代码都是不必要的。大多数情况下,您不需要为数组和字典强制转换为 Objective-C 类型。所以你需要这样的东西:

KCNetWorkTool.tool.getRecordListWith(UserID: userID, Date: dateLabel.text!) { (result) in
    SVProgressHUD.dismiss()
    if let envelopes = result.data["list"] as? [[String: Any?]] {
        self.recordModel.append(envelopes.forEach { EnvelopeModel(dictionary: [=10=]) })
    }
    self.recordTable.reloadData()
}

尚未在编译器中检查过,但类似的东西。

事实上,您需要了解 json 的基本结构,将 json 字符串复制并粘贴到 json 格式化程序在线工具中,

检查从根键到结束键。尝试从结果中解包值。正确调试。

第二次机会,您将直接数据转换为 [String : Any]。 Api 您使用的是什么调用工具 Alamofire 或其他库。

您可以使用 JsonDecoder class 将数据转换为您的模型 class,这是 iOS 中的原生工具。

将您的 json 设为结构,并使用根结构将数据解析为整个模型结构化数据。

struct Root<T> : Codable
{
    var yourRootKey: T?
}

struct Price : Codable
{
    var yoursubKey: Double?
}

Pass in decoder like Root<Price>.self

do{
   let response = try JsonDecoder().decode(Root<Price>.self, for : result.data)
}catch let error{
   print(error.localizedDescription)
}