arrays - 如何编辑我的函数并添加参数数组?

标签 arrays json swift

我有 func Json 解码,我如何现代化我的函数并添加参数数组类型我的“模型”数据?

我需要在另一个全局数组中添加所有解码数据“let model”。 示例:

let myArray = [Any]()

在我认为添加的函数中

myArray.append(model.Welcome)

我的 JSON 解码代码:

struct Welcome: Codable {
    let id: Int
    let name, username, email: String
    let address: Address
    let phone, website: String
    let company: Company
}

struct Address: Codable {
    let street, suite, city, zipcode: String
    let geo: Geo
}

struct Geo: Codable {
    let lat, lng: String
}

struct Company: Codable {
    let name, catchPhrase, bs: String
}


func userApiJsonCodableClass () {
    guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else {return}
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
        guard let dataResponse = data,
            error == nil else {
                print(error?.localizedDescription ?? "Response Error")
                return }

        do {
            //here dataResponse received from a network request
            let decoder = JSONDecoder()
            let model = try decoder.decode([Welcome].self, from:
                dataResponse) //Decode JSON Response Data
            print("---------CodableClass---------")
            print(model[0].website) //Output - 1221
        } catch let parsingError {
            print("Error", parsingError)
        }
    }
    task.resume()
}

最佳答案

首先在此处进行更改:var myArray = [Welcome]()。其次,将您的项目直接收集到数组中: myArray = try detector.decode([Welcome].self, from: dataResponse)//Decode JSON Response Data.

不要忘记在解析错误时清除数组。

var myArray = [Welcome]()

struct Welcome: Codable {
    let id: Int
    let name, username, email: String
    let address: Address
    let phone, website: String
    let company: Company
}

struct Address: Codable {
    let street, suite, city, zipcode: String
    let geo: Geo
}

struct Geo: Codable {
    let lat, lng: String
}

struct Company: Codable {
    let name, catchPhrase, bs: String
}


    func userApiJsonCodableClass () {
        guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else {return}
        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let dataResponse = data,
                error == nil else {
                    print(error?.localizedDescription ?? "Response Error")
                    return }

            do {
                //here dataResponse received from a network request
                let decoder = JSONDecoder()


                myArray = try decoder.decode([Welcome].self, from:
                    dataResponse) //Decode JSON Response Data



                print("---------CodableClass---------")
                print(myArray.first?.website) //Output - 1221
            } catch let parsingError {
                print("Error", parsingError)
                myArray = []
            }
        }
        task.resume()
    }

关于arrays - 如何编辑我的函数并添加参数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55703940/

相关文章:

java - 通过二维数组中随机生成的数字打印字符数

java - 将 json 嵌套对象从 mongodb 映射到 java

javascript - 如何从php文件向json文件添加和删除数据?

ios - 如何调用我的自定义警报 Controller 功能以显示在其他 View Controller 中?

python - 如何将数组中的数字存储在 block 中并创建另一个数组或列表?

c - 在 C 中将位 vector 作为数组进行迭代的最佳方法

javascript - 如何根据子字段的值对对象数组进行排序?

javascript - 使用 JavaScript 生成随机列表

swift - 'NSUnknownKeyException',原因 : '[<Users 0x78eb5bf0> valueForUndefinedKey:]: the entity Users is not key value coding-compliant for the key "James". '

ios - 在 SpriteKit 场景之间传递数据 (Swift)