меня создать следующую структуру для отображения TableView:Фильтрация 2D массив объектов в Swift
struct Section {
var heading : String
var items : [MusicModel]
init(category: String, objects : [MusicModel]) {
heading = category
items = objects
}
}
Тогда у меня есть следующие функции для добавления объектов в массив:
var sectionsArray = [Section]()
func getSectionsFromData() -> [Section] {
let basicStrokes = Section(category: "Basic Strokes",
objects: [MusicModel(title: Title.EightOnAHand, author: .None, snare: true, tenor: true)])
sectionsArray.append(basicStrokes)
return sectionsArray
}
Так tableview загружается просто отлично с заголовком раздела и строками для данных. Я хочу, чтобы иметь возможность фильтровать ячейки таблицы, но мне трудно найти правильный синтаксис для фильтрации массива объектов на основе выбранного пользователем инструмента, который отправляется на функцию фильтрации. Вот что у меня есть:
func getMusic(instrument: MusicData.Instrument) -> [Section] {
if instrument == .Tenor {
let filtered = sections.filter {$0.items.filter {$0.tenor == true}}
return filtered
} else {
let filtered = sections.filter {$0.items.filter {$0.snare == true}}
return filtered
}
}
Объект возвращается, только если ловушка или тенор верны. Ошибка, которую я получаю: Невозможно вызвать «фильтр» с списком аргументов типа »(@noescape (MusicModel) throws -> Bool) '
Любая идея? Если у вас есть предложение по лучшему способу сделать это, я бы очень признателен. Благодаря!
Это решение сработало. Благодаря! –