2016-08-25 51 views
0

我想要計算在PFQueryTableViewController中找到的對象的數量。在PFTableQueryViewController中計算找到的對象

我曾試圖努力與周圍

override func queryForTable() -> PFQuery { 
    let query = PFQuery(className: self.parseClassName!) 
    query.whereKey("member", equalTo: memberId!) 

    let count = query.countObjectsInBackground() 
    label.text = "\(count)" 


    return query 

} 

但我的應用程序會崩潰。

編輯: 問題是不做一個查詢並計算它的對象。問題是使用queryForTable通過我查詢到的cellForRowAtIndexPathPFQueryTableViewController

cellForRowAtIndexPath看起來是這樣的:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? { 

    let cell:DetailApplicantCell = self.table.dequeueReusableCellWithIdentifier("reuseIdentifier") as! DetailApplicantCell 

    if let name = object?.objectForKey(self.textKey!) as? String{ 
    cell.nameLbl.text = name 
    } 
    cell.groupImage.image = UIImage(named: "People.png") 
    if let imageFile = object?.objectForKey(self.imageKey!) as? PFFile{ 
    cell.groupImage.file = imageFile 
    cell.groupImage.loadInBackground() 
    } 

    return cell 

} 

請注意,這不是默認cellForRow

+1

它在哪裏崩潰,什麼是崩潰日誌? – Santosh

回答

0

而不是做第二PFQuery我發現使用的方法更好的方法PFQueryTableViewController是這樣的:

override func objectsDidLoad(error: NSError?) { 
    super.objectsDidLoad(error) 

    print("objectsDidLoad") 
     if let results = self.objects{ 
     print("objectsFound") 

     self.groupsCountLbl.text = "\(results.count)" 
     self.groupsCountLbl.fadeIn() 
    } 
} 

該VC有一個屬性objectsAnyObject?的數組。 使用objectsDidLoad函數確定時間,所有內容都被加載。

1

嘗試用query.findObjectsInBackgroundWithBlock方法獲得響應對象的size()

 let query = PFQuery(className: self.parseClassName!) 
     query.whereKey("member", equalTo: memberId!) 
     query.findObjectsInBackgroundWithBlock { 
       (objects: [AnyObject]?, error: NSError?) -> Void in 

       if error == nil { 
        let count = objects.size() 
        label.text = "\(count)" 
        if let object = objects as? [PFObject] { 

        } 
       } else { 
        // Log details of the failure 
        print("Error: \(error!)") 
       } 
     } 
+0

這不是一種解決方法嗎?這似乎是做2個查詢,而不是隻有一個。 queryForTable()只是將查詢傳遞給cellForRowAtIndexPath – JVS

+0

不,它只是一個查詢 –

+0

我的意思是與cellForRowAtIndexPath中的一個相結合(這是PFQueryTableView的默認行爲) – JVS

0

您是力在2個地方展開,使用if let

func queryForTable() -> PFQuery? { 
    if let parseClass = self.parseClassName { 
     let query = PFQuery(className: parseClass) 
     if let id = memberId { 
     query.whereKey("member", equalTo: id) 
     } 

     let count = query.countObjectsInBackground() 
     label.text = "\(count)" 
     return query 
    } 
    return nil 
} 

然後你用你的功能,如:

if let query = queryForTable() { 
    //your query related code here. 
} 
+0

請考慮我編輯過的筆記 – JVS