我正在使用 Parse 的 PFUser 和 PFRole 类。现在我需要在 UITableView 中列出具有特定角色的用户,这似乎是一个相当简单的任务。
因此,我创建了一个 PFQueryTableViewController 并重写了 queryForTable()
,在其中我尝试首先获取角色,然后获取其用户:
override func queryForTable() -> PFQuery {
let roleQuery: PFQuery? = PFRole.query()
roleQuery!.whereKey("name", equalTo: "admin")
var userQuery: PFQuery?
roleQuery!.getFirstObjectInBackgroundWithBlock {
(object: PFObject?, error: NSError?) -> Void in
if error == nil {
let role: PFRole? = object as? PFRole
let relation: PFRelation? = role!.relationForKey("users")
userQuery = relation!.query()
}
}
return userQuery!
}
但是由于 getFirstObjectInBackgroundWithBlock()
是异步的,因此应该返回的查询始终为 nil。我还尝试了同步的 getFirstObject(),但在这种情况下我收到以下警告:正在主线程上执行长时间运行的操作。
我确信一定有一个简单的方法来设置这个查询......有人有想法吗?预先感谢您!
大卫
最佳答案
我在解析和异步查询方面遇到了类似的问题,并且我以不同的方式解决了它。 您可以在调用 View Controller 中的下载函数的函数中使用闭包。 例如。当您开始下载数据时,在表格 View 上显示事件指示器,如果搜索已结束并成功,则在
if error == nil { //here you can populate your table in your view by using a closure function }
这里是有关如何使用闭包的文档的链接: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-ID103
关于ios - 如何设置 PFQuery 以使用 queryForTable 获取具有给定角色的所有用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711714/