У меня есть массив класса Category, который имеет имя и parentName. У меня есть панель поиска, чтобы позволить пользователям искать категории по имени категории или parentName. В моем полном массиве около 600 наименований. При вводе первой буквы требуется около 2-3 секунд, и все остальные вводы с клавиатуры замораживаются. После первой буквы все быстро.
Вот как я фильтрую
return self.userData.categories.filter({$0.name.lowercased().hasPrefix(searchText.lowercased()) || ($0.parentName != nil && $0.parentName!.lowercased().hasPrefix(searchText.lowercased()))})
Я думаю, что одна часть - это SwiftUI, рендеринг всех строк, однако начальный рендер быстрый .
Вот так я отображаю категории.
List(categories) { category in
CategoryPickerRowView(category: category, isSelected: category.id == self.transaction.categoryId)
.onTapGesture { self.transaction.categoryId = category.id }
}
Обновление: я заметил, когда первая буква набирается или удаляется (когда она медленная), я получаю это сообщение в журналах
[Моментальный снимок] Моментальный снимок представления (0x7fb6bd4b8080, _UIReplicantView), который не был обработан хотя бы один раз, требует afterScreenUpdates: YES.