我不明白这个函数有什么问题:
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 填充的数组中的最后一个对象!谢谢你帮助我!
最佳答案
返回statusFinale
写在 block 中,因此retrieveStatusInTable函数返回Void。
当使用异步方法时,设置函数返回类型“Void”并用 block (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)
})
关于swift - 字符串不能转换为 void,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706724/