Ich habe eine Tabellenansicht und eine Suchleiste hinzugefügt (programmgesteuert). Ich möchte die gefilterten Ergebnisse zeigen, also habe ich ein Array (namens todoTitle) erstellt, das Titel für meine todo-Aktivitäten enthält (ich habe ein separates Objekt für sie und eine seiner Eigenschaften ist title). Ich benutze updateSearchResults-Methode und innerhalb davon benutze ich eine Filtermethode, um richtige Todos zurückzugeben. Um zu überprüfen, dass die Arrays nicht leer sind, schreibe ich Code innerhalb dieser Funktion, um die Todos innerhalb jedes Arrays zu drucken. Hier ist mein Code innerhalb von updateSearchResults (für :) FunktionKann mir jemand sagen, warum mein gefiltertes Array leer ist?
//filtering through todos' titles
filteredTodos = self.todosTitle.filter({ (title: String) -> Bool in
if title.lowercased().contains((self.searchController.searchBar.text?.lowercased())!) {
return true
} else {
print ("S \(todosTitle)")
print ("t \(title)")
print (filteredTodos)
return false
}
})
//updating the results TableView
self.resultsController.tableView.reloadData()
}
``
todosTitle Array nicht leer ist, so dass ich nicht verstehen, warum meine filteredTodos leer. Hat jemand irgendwelche Ideen, warum das passieren könnte?
Drucken des Ergebnisarray 'filteredTodos' * innerhalb des Verschlusses * nicht viel Sinn machen. –
sollten Sie self.searchController.searchBar.text drucken? um zu trösten und zu überprüfen. Es wird sonst blockieren, das könnte der Grund sein. – adev
'filteredodos' wird nicht mit dem Ergebnis des Filters gesetzt, bis der Filter zurückkehrt. nur um klar zu sein – PeejWeej