Ios 如何使用swift 3将解析的json数据保存到数组中

Ios 如何使用swift 3将解析的json数据保存到数组中,ios,arrays,json,swift3,tableview,Ios,Arrays,Json,Swift3,Tableview,因此,我从服务器收到了一些json数据,现在我正试图将其保存为数组,以便用它填充tableview,但在执行此操作时遇到了问题。下面是我的代码: class UserInfo : UIViewController{ var main = "" session.dataTask(with: url) { (data, response, error) in if let response = response { print (response)

因此,我从服务器收到了一些json数据,现在我正试图将其保存为数组,以便用它填充tableview,但在执行此操作时遇到了问题。下面是我的代码:

class UserInfo : UIViewController{
var main = ""
session.dataTask(with: url) { (data, response, error) in
        if let response = response {
            print (response)
        }
        if let data = data {
            let json = (try? JSONSerialization.jsonObject(with: data, options: []))
            print(json)
            guard let array = json as? [Any] else {return}
            for info in array {
            guard let infoDict = info as? [String : Any] else{return}
            //there is a declared var called main
            //main is the one i want save as an array, currently its a variable. i tried to save it as an array by using as! Array but i get error
            self.main = infoDict["Title"] as! String
            print (self.main)
}
}
}.resume()
}

首先,您必须在请求范围之外声明
ari
。然后您必须将数据存储在相同的
ary

var ary: NSMutableArray = NSMutableArray()

session.dataTask(with: url) { (data, response, error) in
            if let response = response {
                print (response)
            }
            if let data = data {
                let json = (try? JSONSerialization.jsonObject(with: data, options: []))
                print(json)
                guard let array = json as? [Any] else {return}
                for info in array {
                    guard let infoDict = info as? [String : Any] else{return}
                    //there is a declared var called main
                    //main is the one i want save as an array, currently its a variable. i tried to save it as an array by using as! Array but i get error
                    self.main = infoDict["Title"] as! String
                    self.ary.add(self.main)
                    print (self.main)
                }
                print("Final array is :::",self.ary)
            }
            }.resume()

试试上面的代码。希望它对您有用。

所以您需要发布收到的json,以便我们知道我们正在处理什么数据。“但是我收到错误”什么错误?您想将这些数据存储在用户默认值中?可选({Body=21456;InfoID=159;Title=“\U062d\U0633\U0627\U0628\U0642\U062f\U0648\U0633\U0641\U064a\U0642\U0648\U0644\U064a”;UserID=“db9b9dce-2c4d-413d-be2d-b61d01bbef3b”;infoType=3;}//这就是它(接收到的数据)的样子。不,我只想将它们保存为数组,这样我就可以在表格中查看它们了。工作正常,但我只是在“打印”中添加了“self”(“最终数组是::”,self.ary)@Duck.P是的,很抱歉。因为这是一个闭包,我们请求从服务器获取数据。谢谢。func tableView(uu tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{let cell=UITableViewCell(style:UITableViewCellStyle.default,reuseIdentifier:“cell”)cell.textLabel?.text=arry//执行此操作时(cell.textlable?.text=arry)出现错误(无法将//类型为'NSMutableArray'的值赋给类型为'String?'))返回(单元格)}是的,编译器将在运行时给您一个错误。因为您正在将值从
NSMutableArray
分配给
UILabel
setText属性。您不能这样做。但如果要分配值,您需要强制数组而不是标签。如下代码:-
cell.ary=arry
cell.ary表示您的NSMutableArray在
UITableViewCell
类实例中。
arry
表示已解析的数据容器。