string不可转换为void

时间:2015-07-29 17:00:14

标签: swift function type-conversion

我无法理解这个功能有什么问题:

var arrayStatusUserTable:[String] = [String]()
var statusText:String = String()

func retrieveStatusInTable(name: String) -> String {

    var statusFinal:String = String()

    var query:PFQuery = PFQuery(className: "Status")
    query.whereKey("NameCreator", equalTo: name)
    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
        for phrase in objects! {
            let phraseTakenParse:String? = (phrase as! PFObject)["Status"] as? String

            if phraseTakenParse != nil {
                self.arrayStatusUserTable.append(phraseTakenParse!)
            }
        }
        // Take the last status
        if var frase = self.arrayStatusUserTable.last {
            var lastFraseStatus:String = frase //self.arrayStatusUtente.last!
            self.statusText = lastFraseStatus

            statusFinale = lastFraseStatus
            return statusFinale
        }
    }
}

这个返回错误:' String'不能转换为' Void'!我只想从Parse填充的数组中返回最后一个对象!谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

用块写的

return statusFinale,所以retrieveStatusInTable函数返回Void。

当你使用异步方法时,设置函数返回类型“Void”并用块告诉结果(completionHandler)。

示例代码:

func retrieveStatusInTable(name: String, completionHandler:((statusFinale: String) -> Void)) {

    // .....

    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
          // ........
          statusFinale = lastFraseStatus
          completionHandler(statusFinale: statusFinal)
    }
}

<强>用法:

retrieveStatusInTable("Sample", { (statusFinale) -> Void in
    println(statusFinale)
})