2015-08-22 70 views
-2

我用類似於從Parse.com獲取,更新,添加和刪除的方法編寫了一個類。解析類從Parse.com獲取數據

我現在有我的getFromParse方法的問題:

class ParseModul { 

var returnArray = [] 



func getFromParse(className:String, whereKey:String, equalTo:String) -> NSArray { 


    let query : PFQuery = PFQuery(className: className) 
    query.whereKey(whereKey, equalTo: equalTo) 


    query.findObjectsInBackgroundWithBlock { 
     (objects: [AnyObject]?, error: NSError?) -> Void in 

     if error == nil { 
      if let objects = objects as? [PFObject] { 
       var temp = [PFObject]() 

       for object in objects { 
        temp.append(object) 
       } 
       self.returnArray = temp 
       print(self.returnArray) // THIS IS THE DATA FROM PARSE 
      } 
     } else { 
      print("Error: \(error!)") 
     } 
    } 

    print(self.returnArray.count) // THIS IS 0 

    if self.returnArray.count > 0 { 

     return self.returnArray 

    } else { 

     self.returnArray = ["nothing"] 

     return self.returnArray 
    } 

} 
} 

我使用它:

let parse:ParseModul = ParseModul() 
let mydata = parse.getFromParse("UserProfile", whereKey: "username", equalTo: "Phil") 

的方法總是返回 「無」。

+0

閱讀關於異步 –

回答

2

您正在返回您的數組之前獲取數據。 在功能塊中取出的數據可能不會返回。

您可能會在自己的區塊中獲取您的數據;

func getFromParse(className:String, whereKey:String, equalTo:String, completion:(arr:NSArray) -> Void) 
{ 


    let query : PFQuery = PFQuery(className: className) 
    query.whereKey(whereKey, equalTo: equalTo) 


    query.findObjectsInBackgroundWithBlock { 
     (objects: [AnyObject]?, error: NSError?) -> Void in 

     if error == nil { 
      if let objects = objects as? [PFObject] { 
       var temp = [PFObject]() 

       for object in objects { 
        temp.append(object) 
       } 
       //??self.returnArray = temp 
       //??print(self.returnArray) // THIS IS THE DATA FROM PARSE 
       completion(temp); 
      } 
     } else { 
      print("Error: \(error!)") 
     } 
    } 
} 

並且像這樣使用它;

let parse:ParseModul = ParseModul() 
parse.getFromParse("UserProfile", whereKey: "username", equalTo: "Phil", completion: { 
    (arr:NSArray) -> Void in 
     self.returnArray = arr 
     print(self.returnArray) // THIS IS THE DATA FROM PARSE 
     // DO SOMETHING HERE 

}) 
+0

對於'completen:(arr:NSArray)'我得到。 '不能用一個元素標籤創建一個元素元組'並且爲'完成(temp)'我得到'不能用類型'([PFObject])'的參數列表調用'completion' – PhilHarmonie