Я пытаюсь сделать страницу, чтобы показать, какой пользователь следует за таблицей. Все кажется мне довольно понятным, но по некоторым причинам этот код не загружает мои данные. Ниже мой следующий контроллер страницы: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. Таким образом, это похоже на то, что он фактически не обновляет массив. Кто-нибудь знает, почему это могло быть?
Я добавил его, но он все равно не сработает, я обновил код на вопрос, хотите ли вы проверить, где я его добавил? Спасибо за помощь! –
какая ошибка вы получаете в журналах? –
Идентификатор должен быть правильным! –