【问题标题】:Filter data with condition in an array inside an array过滤数组内数组中的条件数据
【发布时间】:2017-02-15 01:35:53
【问题描述】:

我需要填写“cursos”,一个数组,里面包含了CursosAllG -> idcarrera == carreraEnSeleccion中所有满足条件“idcarrera”的数组

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 { $0.carrera.first.flatMap { $0.idcarrera == carreraEnSeleccion }! ? $0.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)])]

【问题讨论】:

    标签: arrays swift3 flat


    【解决方案1】:
    cursos = CursosAllG.flatMap {
        $0.carrera.first { $0.idcarrera == carreraEnSeleccion } == nil ? nil : $0.id
    }
    

    【讨论】:

    • 错误:( -> 无法调用非函数类型'CarrerasG?'的值?'
    • 你用的是swift 2还是3?
    • 我正在使用 swift 3
    • 我可以在操场上运行它
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多