Я пытаюсь отфильтровать массив массивов, который содержит основной объект данных типа Bird. Объекты были разделены на массивы массивов на основе UITableView с разделами и строками.NSPredicate на массиве массивов, где некоторая пустая
Для поиска я следующий метод, основанный на этот вопрос NSPredicate on array of arrays:
func filterContentForSearchText(searchText: String) {
let resultPredicate = NSPredicate(format: "SELF[0].common_name contains[cd] %@", searchText)
self.filteredBirds = self.birds.filteredArrayUsingPredicate(resultPredicate!)
}
Это, однако, приводит к ошибке
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'
, который, вероятно, имеет смысл, потому что массив имеет 27 (AZ, #) элементы, из которых некоторые не имеют объектов
Итак, как я могу настроить запрос NSPredicate, чтобы принять во внимание некоторые массивы, возможно, пустые?
Почему у вас есть пустые массивы? Полезны ли они? Избавься от них. Другой ответ, на который вы ссылаетесь, - это другая проблема, вы не хотите индексировать в массив, вы хотите проверить содержимое полного массива ... – Wain
Существуют пустые массивы, потому что UILocalizedIndexedCollation генерирует массив индексов (AZ, #) на основе локали пользователей – Dan