Dies könnte eine grundlegende Frage sein, aber ich kann das nicht herausfinden. Meine Funktion gibt immer einen Nullwert zurück und ich bin mir nicht sicher warum.Funktion gibt Nullwert zurück
Mein Hauptcode (in einem anderen Ansichtscontroller) ruft diese Funktion mit einer "Zeichenfolge" auf, um zu suchen. Aber am Ende der Funktion kann ich niemals die Ergebnisse zurückgeben. Wenn ich die Suchergebnisse dort drucke, wo ich die endgültige Druckanweisung habe, sehe ich die Ergebnisse. Aber unmittelbar nachdem diese Funktion abgeschlossen ist, ist der Rückgabewert gleich Null. Wie bekomme ich den Rückgabewert von dieser Funktion? Danke im Voraus,. Ich benutze Swift BTW.
func fetchSearchResults (_ searchString: String) -> Array<Any> {
self.globalPost = [Posts]()
self.postKeysArray = []
var searchIndex:AlgoliaSearch.Index
let query = Query()
searchIndex = self.client.index(withName: "Comments")
// können Sie all dies unten, bis die letzten paar Zeilen ...
query.attributesToRetrieve = ["userComment","postId"]
query.attributesToHighlight = ["postId"]
query.query = searchString
query.optionalWords = [searchString]
let curSearchId = searchId
searchIndex.search(query, completionHandler: { (content, error) in
if (curSearchId <= self.displayedSearchId) || (error != nil) {
return // Newest query already displayed or error
}
self.displayedSearchId = curSearchId
self.loadedPage = 0 // Reset loaded page
guard let hits = content!["hits"] as? [[String: AnyObject]] else { return }
var tmp = [String]()
for hit in hits {
// print ("Comment is \(commentRecord(json:hit).postId)")
tmp.append(commentRecord(json:hit).postId!)
}
self.postKeysArray = tmp
self.getDatafromFirebase(searchString)
// so meine Suche Code gibt einige Werte hier ignorieren, und ich sehe sie in der Post keysArray.
print ("Search Results -post keys is \(self.postKeysArray)") \\ returns correct values here in the Array
})
self.searchId += 1
// Aber hier bekomme ich einen NULL-Wert.
return self.postKeysArray \\ returns empty array
}
Wenn Sie "null" sagen, meinen Sie "Null" oder ein leeres Array? Wenn es Letzteres ist, liegt das daran, dass es zurückkehrt, bevor der Beendigungshandler beendet ist. –
Es ist ein leeres Array, aber ich bekomme die Ergebnisse für den Druck in der Completion-Handler. – SBCoder
@SBCoder Es gibt nichts "Null" über ein leeres Array. – Alexander