Ios 如何修复无法赋值的类型';数据类';输入';[数据类]和#x2019;使用Swift时出错
我正在用Ios 如何修复无法赋值的类型';数据类';输入';[数据类]和#x2019;使用Swift时出错,ios,swift,Ios,Swift,我正在用Codable实现JSON数据。在这里,我无法将let data:DataClass值分配到数组中。我收到错误“无法将'DataClass'类型的值分配给'[DataClass]'类型。。如何解决此问题 我的JSON可编码文件 // MARK: - Welcome struct Welcome: Codable { let status: Bool let data: DataClass } // MARK: - DataClass struct DataClass:
Codable
实现JSON
数据。在这里,我无法将let data:DataClass值分配到数组中。我收到错误“无法将'DataClass'类型的值分配给'[DataClass]'类型。
。如何解决此问题
我的JSON可编码文件
// MARK: - Welcome
struct Welcome: Codable {
let status: Bool
let data: DataClass
}
// MARK: - DataClass
struct DataClass: Codable {
let agid, teamid, genname, dataDescription: String
let schools: [School]
let games, reminder: [String]
enum CodingKeys: String, CodingKey {
case agid, teamid, genname
case dataDescription = "description"
case schools, games, reminder
}
}
// MARK: - School
struct School: Codable {
let name, team: String
}
func loadJSON(){
let urlPath = ""
let url = NSURL(string: urlPath)
let session = URLSession.shared
let task = session.dataTask(with: url! as URL) { data, response, error in
guard data != nil && error == nil else {
print(error!.localizedDescription)
return
}
do {
let decoder = try JSONDecoder().decode(Welcome.self, from: data!)
let status = decoder.status
if status == true {
self.schoolsData = decoder.data.schools
self.filteredSec = decoder.data // Getting Error Here
DispatchQueue.main.async {
//self.tableView.reloadData()
}
} else {
}
} catch { print(error) }
}
task.resume()
}
我的JSON加载代码
// MARK: - Welcome
struct Welcome: Codable {
let status: Bool
let data: DataClass
}
// MARK: - DataClass
struct DataClass: Codable {
let agid, teamid, genname, dataDescription: String
let schools: [School]
let games, reminder: [String]
enum CodingKeys: String, CodingKey {
case agid, teamid, genname
case dataDescription = "description"
case schools, games, reminder
}
}
// MARK: - School
struct School: Codable {
let name, team: String
}
func loadJSON(){
let urlPath = ""
let url = NSURL(string: urlPath)
let session = URLSession.shared
let task = session.dataTask(with: url! as URL) { data, response, error in
guard data != nil && error == nil else {
print(error!.localizedDescription)
return
}
do {
let decoder = try JSONDecoder().decode(Welcome.self, from: data!)
let status = decoder.status
if status == true {
self.schoolsData = decoder.data.schools
self.filteredSec = decoder.data // Getting Error Here
DispatchQueue.main.async {
//self.tableView.reloadData()
}
} else {
}
} catch { print(error) }
}
task.resume()
}
你的
filteredSec
是如何声明的?我猜它是一个DataClass
数组,如果是,为什么它是数组?你还没有回答我的问题,为什么它是数组?让decoder
是一个误导性的变量名-它不是解码器,而是运行解码器的结果。存储一些解码的结构(self.schoolsData=decoder.data.schools
)并存储其父结构(self.filteredSec=decoder.data
)是冗余的。欢迎
中的数据
不是数组。从API中永远不会得到多个数据类
。为什么是数组?请用简单的英语扩展您的解释以帮助我们。例如。“我的API返回团队的描述。我想在tableView单元格中显示该数据。点击该单元格时,我想在另一个视图中显示更多详细信息“。你的filteredSec
是如何声明的?我猜它是一个DataClass
的数组,如果是,为什么它是数组?你还没有回答我的问题,为什么它是数组?让decoder
是一个误导性的变量名-它不是解码器,它是运行解码器的结果。存储一些解码的结构(self.schoolsData=decoder.data.schools
)并存储其父结构(self.filteredSec=decoder.data
)是多余的。您的欢迎
中的数据
不是数组。您从未从API中获得多个数据类
。为什么使用数组?请用简单的英语扩展您的解释以帮助我们。例如。“我的API返回团队的描述。我想在tableView单元格中显示该数据。点击该单元格时,我想在另一个视图中显示更多详细信息。”。