2015-11-11 1 views
1

Я создал страницу профиля, чтобы отобразить все сообщения в блоге пользователей. В моем диспетчере viewController я использовал PFQueryTableViewController для запросов к блогам пользователей. Проблема, с которой я столкнулась, заключается в том, что когда я запускаю свое приложение, чтобы видеть текущие блоги пользователей, я вижу, что текущие пользователи публикуют сначала в том порядке, в котором он был создан, а затем я вижу блоги всех остальных, которые происходят из имени класса, которое я создал в Parse , Сообщение также повторяется, когда я на этой странице. Есть ли что-то, что мне нужно сделать в моем коде, чтобы показывать только текущие подписанные в блогах пользователей, а не все сообщения из Parse? Я приклеил свой код ниже, чтобы получить лучшую идею.Swift: попытка отображения только данных пользователей на одной странице

import UIKit 
import Parse 
import ParseUI 

class ProfileVC: PFQueryTableViewController { 

    var profilePage:NSMutableArray! = NSMutableArray() 


    override init(style: UITableViewStyle, className: String!) { 
     super.init(style: style, className: className) 
    } 


    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     self.parseClassName = "BlogPost" 
     self.textKey = "blogging" 
     self.pullToRefreshEnabled = true 
     self.objectsPerPage = 200 

    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 

      let user = PFObject(className:"BlogPost") 
      user["writer"] = PFUser.currentUser() 




    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 



    override func objectsDidLoad(error: NSError?) { 
     super.objectsDidLoad(error) 
     profilePage = NSMutableArray(array: objects!) 

     self.tableView.reloadData() 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

      let query = PFQuery(className: "BlogPost") 

     if let user = PFUser.currentUser() { 
      query.whereKey("writer", equalTo: PFUser.currentUser()!.username!) 
      query.addAscendingOrder("createdAt") 
      query.findObjectsInBackgroundWithBlock {(objects: [AnyObject]?, error: NSError?) -> Void in 

       if error == nil{ 
        for object in objects!{ 
         let blog : PFObject = object as! PFObject 
         self.profilePage.addObject(blog) 
        } 

        let array : NSArray = self.profilePage.reverseObjectEnumerator().allObjects 
        self.profilePage = NSMutableArray(array: array) 

        self.tableView.reloadData() 

       } 
      } 
     } 
    } 

    // MARK: - Table view data source 

    override func objectAtIndexPath(indexPath: NSIndexPath!) -> PFObject? { 
     var obj : PFObject? = nil 
     if(indexPath.row < self.profilePage.count){ 
      obj = self.profilePage[indexPath.row] as? PFObject 
     } 

     return obj 
    } 


    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     return profilePage.count 
    } 

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     if indexPath.row == 0 { 
      return 110 
     } 
     else { 
      return 90 
     } 
    } 


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

     let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath!) as! ProfileCell 

     if let object : PFObject = self.profilePage.objectAtIndex(indexPath!.row) as? PFObject { 

      cell.WritersName.text = object["writer"] as? String 
      cell.WritersBlog.text = object["Blog"] as? String 
      let dateCreated = object.createdAt! as NSDate 
      let date = NSDateFormatter() 
      dateFormat.dateFormat = "h:mm a" 
      cell.timeProfile.text = NSString(format: "%@", date.stringFromDate(dateCreated)) as String 

     } 
      return cell 
     } 



// } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 1 
    } 

} 

ответ

0

Я вижу пару потенциальных проблем с вашим кодом.

Во-первых, вы добавляете к одному и тому же массиву каждый раз, когда выполняете запрос.

Если вы инициализируете свой массив во время выполнения запроса, массив будет ограничен результатами текущего запроса и не будет включать результаты предыдущих выборок.

Для этого добавьте инструкцию инициализации в раздел, где вы настраиваете свой запрос.

if let user = PFUser.currentUser() { 

    profilePage = NSMutableArray() // Reset the profile page array. 

    query.whereKey("writer", equalTo: PFUser.currentUser()!.username!) 
    query.addAscendingOrder("createdAt") 
    ... 

Кроме того, код в objectsDidLoad: может быть перезапись результаты, которые вы создаете с помощью запроса.

Попробуйте отключить назначение profilePage, если вы все еще не получили правильные результаты.

override func objectsDidLoad(error: NSError?) { 
    super.objectsDidLoad(error) 
    // profilePage = NSMutableArray(array: objects!) 
    self.tableView.reloadData() 
} 
Смежные вопросы