2014-10-01 68 views
0

解析文檔提供了使用Swift進行查詢的示例,並且它們顯示了訪問像objectId或count之類的內置字段的示例,但訪問對象的某個列又是如何呢?如何從Swift中的Parse查詢結果訪問對象的字段?

var query = PFQuery(className: "MyObject") 
    query.findObjectsInBackgroundWithBlock { 
      (objects: [AnyObject]!, error: NSError!) -> Void in 
      if !(error != nil) { 
       for object in objects { 
        println(object["name"]) 
      } 
      else { 
       println("%@", error) 
      } 
    } 

獲取錯誤「AnyObject」不能轉換爲字符串。

object.objectForKey("name") 

還給出了一個錯誤:「找不到接受所提供的參數‘objectForKey’過載」

現在我也試過「爲PFObject」或類似的東西,但它也導致錯誤加上Parse的文檔不會顯示那樣的東西。 「類型'[AnyObject]'不能被隱式地轉換爲'PFObject';你的意思是使用'as'來強制downcast?」

然後我應用修復,新的錯誤是「類型‘PFObject’不符合協議‘序列類型’

也試過內循環與

let pf = object as PFObject 

向下轉型但不似乎幫助,因爲當我做

let name = pf["name"] 

我得到「‘AnyObject’是無法轉換爲‘字符串’」

感謝您的幫助。我確信我錯過了一些明顯的東西,因爲我還沒有找到任何東西;

+1

你試過'讓名= PF [ 「名稱」]作爲String'? – Paulw11 2014-10-01 07:55:59

+0

這樣做,謝謝。所以你只需要投這樣的東西? 添加它作爲下面的答案,我會選擇它。 – shim 2014-10-02 01:32:05

回答

7

您需要顯式轉換屬性您檢索 -

let name = pf["name"] as String 
1

這爲我工作:

var query = PFQuery(className: "People") 
    query.findObjectsInBackgroundWithBlock { 
     (objects: [AnyObject]!, error: NSError!) -> Void in 

     if error == nil { 

      // query successful - display number of rows found 
      println("Successfully retrieved \(objects.count) people") 

      // print name & hair color of each person found 
      for object in objects { 

       let name = object["name"] as NSString 
       let color = object["hairColor"] as NSString 

       println("\(name) has \(color) hair") 

      } 
     } else { 

      // Log details of the failure 
      NSLog("Error: %@ %@", error, error.userInfo!) 
     } 
    } 
相關問題