2015-04-27 20 views
0
func getParse (className:String,key:String,dataName:AnyObject) -> (String) 
{ 
    var result = String() 
    var query = PFQuery(className: className) 
    query.whereKey(key, equalTo: dataName) 
    query.findObjectsInBackgroundWithBlock{ 
     (objects, error) -> Void in 
     if error == nil { 
      println("Found") 
      if let objects = objects as? [PFObject] { 
       for object in objects { 
        result = object[key] as! String 
       } 
      } 
     } else { 
      println("Error \(error) \(error!.userInfo!)") 
     } 
    } 
    return result 

}如何通過使用解析來快速返回我的字符串?

這是我的功能,可以從我的類解析數據庫中獲取數據。我想在String中返回這些數據,但是當我嘗試打印它時,它什麼也沒有返回。

謝謝你的每一個評論。

+0

這是一個異步調用。在執行完成塊之前,'result'不會被設置。也許有一個'findObjects'版本不是'inBackground'? – Thilo

+0

謝謝,讓我們試試新版本。 –

回答

0

您正在使用異步調用。你需要使用findObjects(),但是這會留在主線程中。爲什麼你需要返回一個字符串?你可以在完成塊中設置一個變量,它可以更新視圖上的標籤或類似的東西。

編輯:由於您試圖設置標籤,因此您無需返回字符串,只需在完成塊內設置標籤即可。這會修改你給出的代碼如下:

func getParse (className:String,key:String,dataName:AnyObject) 
{ 
    var result = String() 
    var query = PFQuery(className: className) 
    query.whereKey(key, equalTo: dataName) 
    query.findObjectsInBackgroundWithBlock{ 
    (objects, error) -> Void in 
    if error == nil { 
     println("Found") 
     if let objects = objects as? [PFObject] { 
      for object in objects { 
       // result = object[key] as! String 
       self.textLabel.text = result // NEW CODE HERE 
      } 
     } 
    } else { 
     println("Error \(error) \(error!.userInfo!)") 
    } 
    } 
} 
+0

我必須從解析數據庫獲取字符串並將其顯示在我的標籤上。對不起,如果我的答案不明確。我對這個領域是新的。 –

+0

如果你做self.label.text = result,那可以設置你的標籤 – BHendricks