【问题标题】:Unexpected non-void return value in void function when returns an array返回数组时 void 函数中出现意外的非 void 返回值
【发布时间】:2017-11-15 06:41:08
【问题描述】:

我想寻求帮助,因为我真的很困惑。当它返回一个数组时,它会显示“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
                })}

【问题讨论】:

  • 您的问题是尝试从异步块返回。
  • 你能解释一下吗?

标签: swift function


【解决方案1】:

您不能只在您的 closure 中返回 words。首先,它是一个异步方法,其次您需要在闭包之外返回一个值,该值将在闭包之前调用。你需要有一个completionHandler 而不是返回Array&lt;Any&gt;。在这种情况下,您可以在成功时传递该值。像这样的:

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

【讨论】:

    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多