我无法理解这个功能有什么问题:
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填充的数组中返回最后一个对象!谢谢你的帮助!
答案 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)
})