Как я могу фильтровать по массиву, который содержится в качестве значения структуры - PullRequest
0 голосов
/ 08 мая 2018

Ниже приведена структура данных, которую я храню в массиве arrayEV Я уверен, что могу фильтровать по имени события в верхнем массиве. Однако я не уверен, как фильтровать массивы по вещам в подмассиве [жара], поэтому я хочу, чтобы основной массив EV отображался только тогда, когда что-либо в [жаре] встречает условие

struct events {
    var eventnumber:Int
    var eventname:String
    var swimmers:[heatlane]?
}

struct heatlane{
    var heat:Int
    var lane:Int
    var age:Int
    var swimmer:String
    var team:String
    var seedTime:String
    var finalsTime:String
}

Ответы [ 3 ]

0 голосов
/ 08 мая 2018
let resultFilter = arrayEV.filter { (events) -> Bool in
        guard let swimmers = events.swimmers else { return false } // check  swimmers not nil
        let result = swimmers.filter({ $0.age == 1}) // age condition
        return result.count ==  0 ? false : true
    }
0 голосов
/ 08 мая 2018

Нет разницы в подходе к фильтрации по простому свойству (например, Int) или более сложному (например, Array или другим). Вы должны просто передать условие, по которому элементы должны быть отфильтрованы.

Если вы хотите отфильтровать события и иметь только те, имя которых начинается с буквы «A», вы должны написать:

let prefixedWithA = events.filter{ $0.eventname.hasPrefix("A") }

Если вы хотите отфильтровать события, у которых есть пловец, чье имя имеет префикс «A», вы должны написать:

let hasSwimmerPrefixedWithA = events.filter{ $0.swimmers?.contains(where: {$0.swimmer.hasPrefix("A")}) ?? false }
0 голосов
/ 08 мая 2018

Использование Array.filter ..

var array: [Any] = []
var heatlaneArr: [heatlane] = []
array.append(heatlaneArr)

Фильтруйте массив таким образом, проверьте каждый элемент массива

let findHeatlaneArray = array.filter { (obj) -> Bool in
   return ((obj as? [heatlane]) != nil)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...