【问题标题】:PFUser query taking time to fetch users from ParsePFUser 查询需要时间从 Parse 中获取用户
【发布时间】:2015-03-10 02:11:52
【问题描述】:

这是我的 viewDidLoad 方法 -

var query = PFUser.query()
    query.findObjectsInBackgroundWithBlock({ ( objects : [AnyObject]! , error: NSError! ) -> Void in

        //self.users.removeAll(keepCapacity: true)
        for object in objects {
            var user:PFUser = object as PFUser
            println(user.username)
            self.users.append(user.username)
        }
        self.tableView.reloadData()
    })
    println( " Count   \(users.count) ")

在用户中的用户名之前打印用户数,这让我相信从数据库中获取用户需要时间。因此,我的 tableView 永远不会更新,其代码如下所示 -

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

cell.textLabel?.text = users[indexPath.row]
    return cell

给我一​​个“数组索引超出范围错误”,因为我的表中的行数是三,而我的字典是空的。

在 swift 上找不到任何特定的解决方案。有什么建议吗?

编辑:忘记提到用户确实会被打印,但经过很长时间(即使在用户名之后打印的用户数之后)

仅供参考,count 始终打印为 1。

输出是这样的 - 计数 1 热纳克斯 genaks1427 genaks14271 阿杜 afd

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    我将 viewDidLoad 函数中的代码转移到 viewDidAppear 函数中,它的工作方式与我希望的工作方式差不多:)

    【讨论】:

      【解决方案2】:

      如果可以,请在 cellForRowAtIndexPath 方法中执行 findObjectsInBackgroundWithBlock 查询。查看本教程:https://www.youtube.com/watch?v=Q6qcrO8uNzU 他在视频中也是如此。

      【讨论】:

      • 我认为这不是一个好主意,因为它会在每次 cellForRowAtIndexPath 更改时运行查询,这是不必要的
      • 你说得对,因为教程我才知道。
      【解决方案3】:

      当您说“我的表中的行数是 3”时,您推断在 numberOfRowsInSection 中您返回了 3。

      如果我是对的,我相信这就是问题所在。

      你必须这样做

      override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
          return users.count
      }
      

      这样 numberOfRowsInSection 将永远不会与预期数量不同。

      【讨论】:

      • 我想问题是获取用户的时间太长,并且在设置表格单元格的文本时,还没有从数据库中获取数据。我这样说是因为用户确实会在我的 viewDidLoad 方法中打印出来,但即使在打印计数之后,这显然是在打印用户名的语句之后。
      猜你喜欢
      • 2019-06-13
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多