【发布时间】:2015-12-13 15:30:02
【问题描述】:
如果我在单独的函数中从我的 Parse 后端检索到某个 PFObject,我试图只调用一个函数only。目前我在设置延迟3.0 后调用第二个函数并且它正在工作,但前提是在3.0 内调用第一个查询函数,否则我必须在第一个之后pullToRefresh tableView函数最终完成以填充 Parse 数据。 (顺便说一下,我使用的是PFQueryTableViewController)
这是我目前的代码(我知道queryForTable 是一个覆盖,所以无论如何都会被调用,所以有没有办法将其更改为普通函数?):
override func viewDidLoad() {
// ideally want something like "if getX'IsComplete' then queryForTable() and self.loadObjects()"
retrieveFirstX()
let delay = 3.0 * Double(NSEC_PER_SEC) // retrieveFirstX must load within 3.0 for table to populate without needing to pullToRefresh
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
self.queryForTable()
self.loadObjects()
})
}
var X = PFObject(className: "X")
func retrieveFirstX() -> Bool {
let xQuery = PFQuery(className: "X")
xQuery.orderByDescending("createdAt")
xQuery.getFirstObjectInBackgroundWithBlock {
(object: PFObject?, error: NSError?) -> Void in
if error == nil {
self.X = object!
}
}
return true
}
override func queryForTable() -> PFQuery {
let xRelation = X.relationForKey("xPosts") as PFRelation!
let relationQuery = xRelation.query()
let xPostsQuery = PFQuery(className: "Posts")
xPostsQuery.includeKey("postUser")
xPostsQuery.whereKey("objectId", matchesKey: "objectId", inQuery: relationQuery)
xPostsQuery.cachePolicy = .NetworkElseCache
xPostsQuery.orderByDescending("createdAt")
return xPostsQuery
}
我是否需要使用完成处理程序,如果需要,我以前从未使用过它们该怎么做?
提前致谢!
【问题讨论】:
标签: swift function parse-platform pfquery pfquerytableviewcontrolle