为什么我无法获取 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)
}
我想获取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)
}