gpt4 book ai didi

function - 在函数调用中,为什么parse语句在SWIFT中最后执行?

转载 作者:行者123 更新时间:2023-11-30 10:19:16 26 4
gpt4 key购买 nike

我开始使用 SWIFT。我尝试使用以下代码来检查函数调用是如何工作的。函数调用工作正常,正如我们所愿。但是,在 PARSE 中,该顺序在解析语句中不起作用。当所有函数结束时,解析语句将被执行。怎么解决这个问题。如果我运行这段代码,我会得到类似的输出,

我的输出:

START
FIRST CLASS TOP
FIRST CLASS BOTTOM
SECOND CLASS
THIRD CLASS
END
WELCOME TO PARSE // WHY THIS LINE IS PRINTING LAST??

但是,我需要像这样的输出

所需输出:

START
FIRST CLASS TOP
WELCOME TO PARSE //I NEED THIS LINE TO BE EXECUTE IN ORDER.
FIRST CLASS BOTTOM
SECOND CLASS
THIRD CLASS
END

我的编码如下。请检查并指导我。

class ViewController: UIViewController {

let one_1 = class_1()
let second_2 = class_2()
let third_3 = class_3()

override func viewDidLoad() {
super.viewDidLoad()
println("START")

one_1.one()
second_2.second()
third_3.third()

println("END")


// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}
//CLASS_1

class class_1 {

var par_query = PFQuery(className: "story")

func one() {
println("FIRST CLASS TOP")


par_query.findObjectsInBackgroundWithBlock({(NSArray objects, NSError error) in

if (error != nil) {
NSLog("error " + error.localizedDescription)
}
else {
println("WELCOME TO PARSE")

}//ELSE ENDING


}) //PARSE ENDING

println("FIRST CLASS BOTTOM")
}
}

//CLASS_2
class class_2 {

func second() {
println("SECOND CLASS")
}
}
//CLASS_3
class class_3 {

func third() {
println("THIRD CLASS")
}
}

最佳答案

它与 parse.com 特别无关,它的行为方式是因为 findObjectsInBackgroundWithBlock异步执行的。您可以阅读 here .

更新:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
//Do some time comsuming calculation
//And when it's done
dispatch_async(dispatch_get_main_queue()) {
//Update the UI with your results
}
}

更新2

让我这样说:如果你在异步闭包中打印任何内容,例如“WELCOME TO PARSE”,你无法确定它何时被执行。我将用 * 标记可以在哪里使用您当前的代码显示“WELCOME TO PARSE”消息:

开始

头等舱

一流的底部

*

第二类

*

第三类

*

结束

*

如果你想打印你想要的精确行,你可以做两件事:

  1. 不要将 println 放在异步 block 中
  2. 将“FIRST CLASS BOTTOM”放入异步 block 中,并同时放入

    class_2().second()
    class_3().third()
    在 asych block 中,以便在 block 执行后调用。不过,我不推荐这样做,这只是为了示例。

关于function - 在函数调用中,为什么parse语句在SWIFT中最后执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190860/

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