2017-02-15 2 views
0

мне нужно заполнить «Cursos», массив, который содержит все те, которые отвечают условию «idcarrera» в CursosAllG -> 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 { $0.carrera.first.flatMap { $0.idcarrera == carreraEnSeleccion }! ? $0.id: nil } 

Но это дает мне лишь несколько результатов (почти всегда только первые в массиве Carreras в CursosAllG), и не все те, которые действительно соответствуют этому условию.

Пример ->

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)])] 

ответ

0
cursos = CursosAllG.flatMap { 
    $0.carrera.first { $0.idcarrera == carreraEnSeleccion } == nil ? nil : $0.id 
} 

playground

+0

Ошибка :(-> Не удается вызвать значение не-функции типа –

+0

Вы используете скор 2 или 3 – Callam

+0

Я 'CarrerasG?'? m using swift 3 –

Смежные вопросы