【问题标题】:PFQuery Not Working [closed]PFQuery 不工作 [关闭]
【发布时间】:2016-01-30 19:40:04
【问题描述】:
func findEmployee(completion: (array: [AnyObject], error: String?) -> Void) {
    let query = PFQuery(className: "Employee")
    query.findObjectsInBackgroundWithBlock { (results, error) -> Void in
        var employeeArray = [PFEmployee]()
        if let error = error {
            let errorString = error.userInfo["error"] as? String
            completion(array: employeeArray, error: errorString)
        } else {
            for employee in results! {
                let currentEmployee: PFEmployee = employee as! PFEmployee
                employeeArray.append(currentEmployee)
            }
            completion(array: employeeArray, error: nil)
        }
    }
}

上面是用于从 Parse 中的“Employee”类查询数据的代码。出于某种原因,没有任何查询。出了什么问题?

【问题讨论】:

  • 您能描述一下您目前的调查吗? SO 不喜欢粘贴代码并询问为什么它不起作用。甚至有一个相近的类别准确地说明了这一点。
  • 与题中的弱点无关,我觉得可以把整个补全块换成一行:completion(array: array, error: error)

标签: ios swift parse-platform pfquery


【解决方案1】:

您确定员工数组不存在于内存中,并且您的 UI 没有在后台任务完成之前尝试加载数据吗?您可能需要将完成块放在其中:

dispatch_async(dispatch_get_main_queue()) {
    completion(.....)
}

这就是我在我的 Parse 应用程序中的做法,并且它有效。

【讨论】:

  • 感谢您的回答。我试过实现这个,但还是不行。
  • 您是否尝试在查询块的每个部分添加打印语句/调试以查看它在哪里执行?
  • 是的。当我调用 findObjectsInBackgroundWithBlock 方法时,我插入了 print 语句,其中包含从 parse 返回的数组以及所有数据。返回的数组是空的。
  • 我什至检查了类名,只是为了确定,没问题
  • 完成块在主线程上运行。 @JustinStanley,你可以从你的代码中删除这些。
【解决方案2】:

用 [PFObject] 替换 [AnyObject]?而是。

【讨论】:

  • 再次感谢您的回答!这仍然不起作用,因为当我调用此方法时,我将数组转换为 PFObject 类型的数组。
  • 我没有看到 PFObject,只有 PFEmployee。也许它在这一点上失败了,因为它无法正确地从 PFObject 转换为您的自定义 PFEmployee 对象?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2014-05-04
  • 2016-04-26
  • 2012-10-08
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多