使用 swift 从解析中检索用户数据以显示在表视图中

Retrieve data of users from parse to show in tableview with swift

这是我在 swift

中的代码
class UserViewController: UITableViewController {

var userArray: [String] = []

@IBOutlet weak var friendListTableView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()

       retrieveMessages()

   }
func retrieveMessages() {
    var userArray: [String] = []
    var query:PFQuery = PFQuery(className: "User")
    var currentUser = query.whereKey("username", equalTo: PFUser.currentUser())
    currentUser.findObjectsInBackgroundWithBlock {
        (objects, error) -> Void in

        for object in objects! {
            let username:String? = (object as PFObject)["Friends"] as? String
            if username != nil {
                self.userArray.append(username!)
            }
        }
    }
    self.friendListTableView.reloadData()
}
            override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1
}

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


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

    // Update - replace as with as!

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

    cell.textLabel?.text = userArray[indexPath.row]

    return cell
}

这是我用户的 table https://www.dropbox.com/s/6xp48v3yn0l2hje/Screen%20Shot%202015-06-03%20at%202.10.13%20PM.png?dl=0
这是我当前用户在 Parse Relation https://www.dropbox.com/s/pd8mt8sf35u1m0v/Screen%20Shot%202015-06-03%20at%202.10.55%20PM.png?dl=0

中的好友列表

我在 class "User" 的 "Friends" 列中使用 PFRelation 保存了当前用户的好友列表,我想检索当前用户的好友列表以在 table 中显示]view 但问题是我无法更新 tableview 以显示当前用户的好友列表,它是空的,tableview 中根本没有用户列表。 我的代码适用于此方法吗?如果不是,请帮助我更正此代码。 谢谢!

您在收到来自 Parse 的列表之前正在更新 table,试试这个:

func retrieveMessages() {
    var userArray: [String] = []
    var query:PFQuery = PFQuery(className: "User")
    var currentUser = query.whereKey("username", equalTo: PFUser.currentUser())
    currentUser.findObjectsInBackgroundWithBlock {
        (objects, error) -> Void in

        for object in objects! {
            let username:String? = (object as PFObject)["Friends"] as? String
            if username != nil {
                self.userArray.append(username!)
            }
        }
        self.friendListTableView.reloadData()
    }
}

唯一的区别是我将 reloadData 函数移到了完成块中,因此它会在数据从 parse

返回后发生

您必须从 findObjectsInBackgroundWithBlock 块内部调用 reloadData。

现在您在获取数据之前调用 reloadData。