我刚刚开始理解使用flatMap等。为我的数组制作过滤器。问题是我不太清楚如何在其他人中使用过滤器以提高搜索效率,特别是我需要在数组“RA”中提取“nombre”元素(RA包含在数组“Actividades”中)因此,可能有几个“RA”阵列)。在这种情况下的过滤器是Planificacion - > idCurso == 61,Semana - > semana ==“S7”,Clase - > clase ==“C1”。过滤器也可能没有“RA”元素。
class Planificacion: NSObject, NSCoding {
let idCurso: Int
let semana: [Semana]
init(idCurso: Int, semana: [Semana]) {
self.idCurso = idCurso
self.semana = semana
}
}
class Semana: NSObject, NSCoding {
let semana: String
let id: Int
let numero: Int
let clase: [Clase]
init(semana: String, id: Int, numero: Int, clase: [Clase]) {
self.semana = semana
self.id = id
self.numero = numero
self.clase = clase
}
}
class Clase: NSObject, NSCoding {
let clase: String
let id: Int
let numero: Int
let fecha_progr: String
let actividades: [Actividades]
init(clase: String, id: Int, numero: Int, fecha_progr: String, actividades: [Actividades]) {
self.clase = clase
self.id = id
self.numero = numero
self.fecha_progr = fecha_progr
self.actividades = actividades
}
}
class Actividades: NSObject, NSCoding {
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
}
}
class RA: NSObject, NSCoding {
let id: Int
let nombre: String
init(id: Int, nombre: String) {
self.id = id
self.nombre = nombre
}
}
var arrayPlanificacion = [Semana]()
if let sale = PlanificacionAll.first(where: { $0.idCurso == 61 }) {
arrayPlanificacion = sale.semana
arrayPlanificacion.sort { $0.numero < $1.numero }
}
if let clase = arrayPlanificacion.first(where: { $0.semana == "S7" }) {
for i in clase.clase {
if let inClase = clase.clase.first(where: { $0.clase == "C1" }){
var actividades = [Actividades]()
actividades = inClase.actividades
...
}
}
}