Search code examples
swiftnsarray

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


I want to get the value of NSArray, but it always gives me nil value, Anyone knows how to solve it?

it is created by 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()
        }
    }

Solution

  • Most of your code is unnecessary. Mostly, you don't need to be casting to Objective-C types for arrays and dictionaries. So you need something like this:

    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: $0) })
        }
        self.recordTable.reloadData()
    }
    

    Haven't checked that in a compiler, but something like that.