2016-03-06 4 views
0

Я пытаюсь сделать страницу, чтобы показать, какой пользователь следует за таблицей. Все кажется мне довольно понятным, но по некоторым причинам этот код не загружает мои данные. Ниже мой следующий контроллер страницы:UITableView не загружает данные - Swift 2 с Xcode 7.2

Фонд импорт импорта Разбирает

class FollowingController: UIViewController, UITableViewDataSource, UITableViewDelegate{ 

    var profileId : String = String() 

    @IBOutlet weak var loadingIndicator: UIActivityIndicatorView! 

    @IBOutlet weak var topTitleBar: UIImageView! 

    @IBOutlet weak var mainBox: UIImageView! 

    @IBOutlet var tableView: UITableView! 

    var resultData:NSMutableArray = NSMutableArray() 

    func loadData(){ 

     resultData.removeAllObjects() 

     loadingIndicator.hidden = false 
     loadingIndicator.startAnimating() 

     var counter = 0 
     let followingQuery = PFQuery(className: "Followers") 
     followingQuery.whereKey("following", equalTo: profileId) 
     followingQuery.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
      if let objects = objects { 
       for object in objects { 
        let userQuery = PFUser.query() 
        userQuery?.whereKey("objectId", equalTo: object["followed"] as! String) 
        userQuery?.findObjectsInBackgroundWithBlock({ (users, error) -> Void in 
         if let users = users { 
          for user in users{ 
           let followed = user as! PFUser 
           self.resultData.addObject(followed) 
           counter++ 
          } 
         } 
        }) 
       } 
      } 

let array:NSArray = self.resultData.reverseObjectEnumerator().allObjects 
      self.resultData = NSMutableArray(array: array) 
      self.tableView.reloadData() 
      if counter == 0 { 
       //Handle no results 
      } 
     } 

     loadingIndicator.hidden = true 
    } 



    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 



    override func viewDidAppear(animated: Bool) { 
     self.loadData() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 


    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    } 


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return resultData.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


     let cell:FollowingCell = tableView.dequeueReusableCellWithIdentifier("FollowingCell", forIndexPath: indexPath) as! FollowingCell 
     let user:PFUser = self.resultData.objectAtIndex(indexPath.row) as! PFUser 

     let name = (user.objectForKey("firstName") as! String) + " " + (user.objectForKey("lastName") as! String) 
     cell.name.text = name 

     if let profilePicture = user.objectForKey("profilePicture") as? PFFile { 
      profilePicture.getDataInBackgroundWithBlock({ (data, error) -> Void in 
       if error == nil { 
        let profileImage = UIImage(data: data!) 
        cell.profilePicture.image = profileImage 
       } 
      }) 
     } 


     return cell 
    } 

    override func viewDidLayoutSubviews() { 
    } 

    @IBAction func backButtonPressed(sender: AnyObject) { 
     self.dismissViewControllerAnimated(true, completion: {}); 
    } 

} 

Я создал пользовательский класс для моей камеры и назвал его FollowingCell. Все выходы подключены к переменным в классе, а также к файлу datasource таблицы & делегату в ViewController! Если вы заметите все, что может привести к тому, что эта таблица не отображает данные, сообщите мне. Благодарю.

РЕДАКТИРОВАТЬ: проблема заключается в том, что, хотя я загружаю массив resultData в цикл for для каждого пользователя, за пределами вызова findObjectInBackgroundWithBlock результат возвращает результат 0. Таким образом, это похоже на то, что он фактически не обновляет массив. Кто-нибудь знает, почему это могло быть?

ответ

2

Вы забыли перезагрузить Tableview

mytableview.reloadData() 

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

и проверить идентификаторы ячеек правильно объявленные в раскадровке

+0

Я добавил его, но он все равно не сработает, я обновил код на вопрос, хотите ли вы проверить, где я его добавил? Спасибо за помощь! –

+0

какая ошибка вы получаете в журналах? –

+0

Идентификатор должен быть правильным! –

0

Возможно, вы забыли установить идентификатор для своей ячейки из раскадровки как «FollowCell», дважды проверьте ее. Также перезагрузите tableView.

+0

Я только что обновил код в вопросе перезагрузки данных tableView! Я дважды проверил идентификатор, и это должно быть правильно! –

0

Я нашел проблему, возникла проблема, когда я перезагрузил данные вне второго запроса. Перезагрузка данных внутри второго запроса запроса и вне внутренней работы!

Смежные вопросы