我有以下问题,我生成结构以在网上存储来自JSON的信息。以下是用于理解结构的代码提取。
struct Planificacion {
let semana: [Semana]
init(semana: [Semana]) {
self.semana = semana
}
struct Semana {
let id: Int
let numero: Int
let clase: [Clase]
init(id: Int, numero: Int, clase: [Clase]) {
self.id = id
self.numero = numero
self.clase = clase
}
struct Clase {
let clase: String
let id: Int
let numero: Int
let fecha_progr: String
let comentarios: [Comentarios]
let actividades: [Actividades]
init(clase: String, id: Int, numero: Int, fecha_progr: String, comentarios: [Comentarios], actividades: [Actividades]) {
self.clase = clase
self.id = id
self.numero = numero
self.fecha_progr = fecha_progr
self.comentarios = comentarios
self.actividades = actividades
}
struct Comentarios {
let id: Int
let texto: String
let fecha: String
let usuario: String
init(id: Int, texto: String, fecha: String, usuario: String) {
self.id = id
self.texto = texto
self.fecha = fecha
self.usuario = usuario
}
}
struct Actividades {
let id: Int
let texto: String
let tipo: String
let ra: [RA]
init(id: Int, texto: String, tipo: String, ra: [RA]) {
self.id = id
self.texto = texto
self.tipo = tipo
self.ra = ra
}
struct RA {
let id: Int
let nombre: String
init(id: Int, nombre: String) {
self.id = id
self.nombre = nombre
}
}
}
}
}
}
var plani = [Planificacion]()
let url = URL(string: "https://www.example.com")!
URLSession.shared.dataTask(with:url) { (data, response, error) in
if error != nil {
print(error!)
} else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as! NSDictionary
for (key, value) in parsedData {
var semanaT = String()
var numeroT = Int()
var idT = Int()
var clasesT = [Any]()
if let semana = parsedData[key] as? NSDictionary {
.
.
.
if let clases = semana["clases"] as? [String:Any] {
for (key, value) in clases {
var claseT = String()
var idClaseT = Int()
var numeroClaseT = Int()
var fecha_progT = String()
var estadosT = [Any]()
var comentariosT = [Any]()
var actividadesT = [Any]()
if let clase = clases[key] as? NSDictionary {
.
.
.
if let actividades = clase["actividades"] as? [String:Any] {
for (key, value) in actividades {
var idActividadT = Int()
var textoActividadT = String()
var tipoActividadT = String()
var rasT = [Any]()
if let actividadesInfo = actividades[key] as? NSDictionary {
.
.
.
if let ras = actividadesInfo["ra"] as? [String:Any] {
for (key, value) in ras {
.
.
.
var RA = Planificacion.Semana.Clase.Actividades.RA(id: idRAT, nombre: nombreRAT)
rasT.append(RA)
}
}
}
**var actividad = Planificacion.Semana.Clase.Actividades(id: idActividadT, texto: textoActividadT, tipo: tipoActividadT, ra: rasT)**
actividadesT.append(actividad)
}
}
.
.
.
}
**var clase = Planificacion.Semana.Clase(clase: claseT, id: idClaseT, numero: numeroClaseT, fecha_progr: fecha_progT, comentarios: comentariosT, estado: estadosT, actividades: actividadesT)**
}
}
}
} catch let error as NSError {
print(error)
}
}
}.resume()
我现在的问题是我无法保存变量“actividad”,这是粗体,我认为是由“rasT”数组发生的,但我不确定。控制台抛出以下错误。
error: cannot invoke value of type 'Planificacion.Semana.Clase.Actividades.Type' with argument list '(id: Int, texto: String, tipo: String, ra: [Any])'
var actividad = Planificacion.Semana.Clase.Actividades(id: idActividadT, texto: textoActividadT, tipo: tipoActividadT, ra: rasT)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
我找不到问题,这个问题在“clase”中复制,几乎在代码的末尾,也是粗体。
答案 0 :(得分:0)
错误告诉你整个问题。您已将[Any]
传递给需要[RA]
的参数。
var actividad = Planificacion.Semana.Clase.Actividades(id: idActividadT, texto: textoActividadT, tipo: tipoActividadT, ra: rasT)
所以rasT
似乎是[Any]
,这正是我们所看到的:
var rasT = [Any]()
这应该是[RA]
。