Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何修复无法赋值的类型';数据类';输入';[数据类]和#x2019;使用Swift时出错_Ios_Swift - Fatal编程技术网

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单元格中显示该数据。点击该单元格时,我想在另一个视图中显示更多详细信息。”。