在数组内的数组中使用条件过滤数据
Filter data with condition in an array inside an array
我需要填写"cursos",一个数组,里面包含了CursosAllG中所有满足条件"idcarrera"的 -> idcarrera == carreraEnSeleccion
class CursosG: NSObject, NSCoding {
let id: Int
let nrc: String
let profesor: String
let carrera: [CarrerasG]
init(id: Int, nrc: String, profesor: String, carrera: [CarrerasG]) {
self.id = id
self.nrc = nrc
self.profesor = profesor
self.carrera = carrera
}
}
class CarrerasG: NSObject, NSCoding {
let idcarrera: Int
let nombre: String
let semestre: Int
init(idcarrera: Int, nombre: String, semestre: Int) {
self.idcarrera = idcarrera
self.nombre = nombre
self.semestre = semestre
}
}
...
var carreraEnSeleccion = 1
var CursosAllG = [CursosG]()
var cursos = [Int()]
...
cursos = CursosAllG.flatMap { [=10=].carrera.first.flatMap { [=10=].idcarrera == carreraEnSeleccion }! ? [=10=].id: nil }
但它只抛出一些结果(几乎总是只有 CursosAllG 中 Carreras 数组中的第一个结果)而不是所有真正满足条件的结果。
示例 ->
CursosAllG = [CursosG(id: 2, nrc: "1234", profesor: "Ross", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 3), CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 3)]), CursosG(id: 3, nrc: "1234", profesor: "Eric", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 4), CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 5)]), CursosG(id: 10, nrc: "1234", profesor: "Pelao", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 10)]), CursosG(id: 13, nrc: "1234", profesor: "zandoval", carrera: [CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 10)])]
cursos = CursosAllG.flatMap {
[=10=].carrera.first { [=10=].idcarrera == carreraEnSeleccion } == nil ? nil : [=10=].id
}
我需要填写"cursos",一个数组,里面包含了CursosAllG中所有满足条件"idcarrera"的 -> idcarrera == carreraEnSeleccion
class CursosG: NSObject, NSCoding {
let id: Int
let nrc: String
let profesor: String
let carrera: [CarrerasG]
init(id: Int, nrc: String, profesor: String, carrera: [CarrerasG]) {
self.id = id
self.nrc = nrc
self.profesor = profesor
self.carrera = carrera
}
}
class CarrerasG: NSObject, NSCoding {
let idcarrera: Int
let nombre: String
let semestre: Int
init(idcarrera: Int, nombre: String, semestre: Int) {
self.idcarrera = idcarrera
self.nombre = nombre
self.semestre = semestre
}
}
...
var carreraEnSeleccion = 1
var CursosAllG = [CursosG]()
var cursos = [Int()]
...
cursos = CursosAllG.flatMap { [=10=].carrera.first.flatMap { [=10=].idcarrera == carreraEnSeleccion }! ? [=10=].id: nil }
但它只抛出一些结果(几乎总是只有 CursosAllG 中 Carreras 数组中的第一个结果)而不是所有真正满足条件的结果。
示例 ->
CursosAllG = [CursosG(id: 2, nrc: "1234", profesor: "Ross", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 3), CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 3)]), CursosG(id: 3, nrc: "1234", profesor: "Eric", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 4), CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 5)]), CursosG(id: 10, nrc: "1234", profesor: "Pelao", carrera: [CarrerasG(idcarrera: 2, nombre: "ICI", semestre: 10)]), CursosG(id: 13, nrc: "1234", profesor: "zandoval", carrera: [CarrerasG(idcarrera: 1, nombre: "ICCI", semestre: 10)])]
cursos = CursosAllG.flatMap {
[=10=].carrera.first { [=10=].idcarrera == carreraEnSeleccion } == nil ? nil : [=10=].id
}