gpt4 book ai didi

swift - 如何仅在另一个函数完成时才调用一个函数? (Swift 并从 Parse 中检索)

转载 作者:搜寻专家 更新时间:2023-11-01 06:41:50 24 4
gpt4 key购买 nike

如果我在一个单独的函数中从我的 Parse 后端检索到某个 PFObject,我试图只调用一个函数 only 。目前我在 3.0 的设定延迟后调用第二个函数并且它正在工作,但前提是第一个查询函数在 3.0 内调用,否则我必须pullToRefresh tableView 在第一个函数最终完成后用 Parse 数据填充。 (顺便说一下,我正在使用 PFQueryTableViewController)

这是我目前的代码(我知道 queryForTable 是一个重写,因此无论如何都会被调用,所以有没有办法将其更改为正常的 func?):

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
}

我是否需要使用完成处理程序?如果需要,我该怎么做,因为我以前从未使用过它们?

提前致谢!

最佳答案

完成处理程序听起来不错,类似于:

override func viewDidLoad() {
let completionHandler = {
self.queryForTable()
self.loadObjects()
}
retrieveFirstX(completionHandler)
}

func retrieveFirstX(completion: ()->()) -> Bool {
let xQuery = PFQuery(className: "X")
xQuery.orderByDescending("createdAt")
xQuery.getFirstObjectInBackgroundWithBlock {
(object: PFObject?, error: NSError?) -> Void in
if error == nil {
self.X = object!
completion()
}
}
return true
}

关于swift - 如何仅在另一个函数完成时才调用一个函数? (Swift 并从 Parse 中检索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com