2015-04-23 28 views
0

我想從parse.com查詢,我會每分鐘接收大約100個對象。我在他們的網站上使用了swift示例代碼,並且該應用程序沒有使用該代碼構建。所以,我環顧四周,發現有人使用類似下面的代碼:Parse.com查詢與迅速1.2和字符串數組

var query = PFQuery(className:"posts") 
    query.whereKey("post", equalTo: "true") 
    query.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]?, error: NSError?) -> Void in 
     // do something 


     self.myDataArray = objects as! [String] 

    }) 

這是不行的,因爲我想PFObject轉換爲字符串

我需要得到從一個一個的值每個對象轉換成一個swift字符串數組[String]。我怎樣才能得到一個文本值,而不是PFObject,我怎樣才能得到它的swift字符串數組?

回答

1

我不會說得很好,但代碼的問題是它試圖將返回的PFObject轉換爲字符串,但是您想提取一個字符串屬性,所以(如果您真的想這樣做) :

for object in objects { 
    var someString = object.valueForKey("someAttributeName") as String 
    self.myDataArray.addObject(someString) 
} 

但是請確保您需要這樣做。我注意到很多新的解析/快速用戶(尤其是那些正在填充表的人)有衝動要丟棄返回的PFObject,而僅僅傾向於其中一個屬性。考慮保留PFObject並在需要時隨後提取屬性。你可能會發現你也需要其他屬性。

0

對於初學者,我肯定會推薦使用「if let」模式來限定傳入數據。這是一個很好的Swift特性,有助於避免運行時錯誤。

var query = PFQuery(className:"posts") 
query.whereKey("post", equalTo: "true") 
query.findObjectsInBackgroundWithBlock(
{ (objects: [AnyObject]?, error: NSError?) -> Void in 

    // check your incoming data and try to cast to array of "posts" objects. 
    if let foundPosts = objects as? [posts] 
    { 
     // iterate over posts and try to extract the attribute you're after 
     for post in foundPosts 
     { 
      // this won't crash if the value is nil 
      if let foundString = post.objectForKey("keyForStringYouWant") as? String 
      { 
       // found a good data value and was able to cast to string, add it to your array! 
       self.myDataArray.addObject(foundString) 
      } 
     } 
}) 
+0

這會導致此錯誤。我試圖將其更改爲[PFObject],但後來我得到了更多的錯誤。 「使用未申報類型'帖子' –