返回数组时void函数中出现意外的非void返回值

时间:2017-11-15 06:41:09

标签: swift function

我想得到帮助因为我真的很困惑。它在返回数组时说“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
                })}

1 个答案:

答案 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)
})