arrays - 如何编辑我的函数并添加参数数组?
问题描述
我有 func Json 解码,我如何现代化我的函数并添加参数数组类型我的“模型”数据?
我需要在另一个全局数组中添加所有解码数据“让模型”。例子:
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 decoder.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()
}
推荐阅读
- r - R 中的 CreateSeuratObject 问题 - 当第一列是基因名称时,它声明“X 个样本中的 0 个特征”
- javascript - 在 PlanetaryJs 中缩放到 3D 地图中的当前位置
- vba - 尝试正确使用 vba 中的复制和粘贴功能
- javascript - 同一浏览器或不同浏览器的不同选项卡中的多个会话检测
- flutter - 在长文本后立即添加图标
- javascript - AJAX 发送一个东西而 PHP 接收另一个东西?
- android - 为什么我在 ViewModel 中使用 LiveData 时数据不持久?
- webpack - Webpack 开发服务器 4.0.0 选项“打开”不起作用
- postgresql - 将 LOOP 合并到 SQL 中
- javascript - Javascript 日期在阿拉伯语语言环境中无法正确显示