我想得到帮助因为我真的很困惑。它在返回数组时说“void函数中的意外的非void返回值”。我认为我的问题是括号,但我不知道如何修复它。
func getWords() -> Array<Any>{
ref = Database.database().reference()
ref.child("addedWords").observe(.value, with: { (DataSnapshot) in
var tempWords = DataSnapshot.value as! [String:AnyObject]
var words = Array(tempWords.keys)
print(words)
return words
})}
答案 0 :(得分:0)
您只能在words
中返回closure
。首先,它是一个异步方法,您需要在闭包之外返回一个值,该值将在闭包之前调用。您需要completionHandler
而不是返回Array<Any>
。在这种情况下,您可以在成功时传递值。像这样:
func getWords(onCompletion: @escaping (Array<Any>) -> Void) {
ref = Database.database().reference()
ref.child("addedWords").observe(.value, with: { (DataSnapshot) in
var tempWords = DataSnapshot.value as! [String:AnyObject]
var words = Array(tempWords.keys)
print(words)
onCompletion(words)
})
}
要打电话:
getWords(onCompletion: { (words) in
print(words)
})