gpt4 book ai didi

swift - 如何访问 Parse 的 getObjectInBackgroundWithId block 之外的变量值

转载 作者:行者123 更新时间:2023-11-30 10:08:58 25 4
gpt4 key购买 nike

使用以下 Swift 代码,我需要打印值 5/hhhh。首先,在“var hhhh:Int = 0”处将 hhhh 设置为零,然后,在“getObjectInBackgroundWithId” block 内,hhhh 的值通过“hhhh = appleCount["count"] as! Int”使用之前的数据进行更新刚刚从 Parse 查询。接下来,我需要以某种方式访问​​“getObjectInBackgroundWithId” block 之外的 hhhh 的更新值并打印以下值“print(5/hhhh)”,但是,这条线上的 hhhh 值仍然为零,我正在做 NAN这个操作。 osteven 好心地给了我一些关于为什么 hhhh 的值此时为零的提示:

Local and Global variables in Swift

但是,我还没有找到一种方法以某种方式将 hhhh 的更新值传输到“getObjectInBackgroundWithId” block 之外,并在“print(5/hhhh)”处使用该值而不是零。非常感谢任何有关如何实现这一目标的帮助或提示

import UIKit
import Parse
class NewsPageViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad(
var hhhh:Int = 0
var tttt:Int = 0
var cccc:Int = 1

if cccc == 1 {
var query = PFQuery(className: "Count")
query.getObjectInBackgroundWithId("RhC25gVjZm", block: { (object: PFObject?, error: NSError?) -> Void in
if error != nil {
print(error)
} else if let appleCount = object {
appleCount["count"] = appleCount["count"] as! Int + 1
hhhh = appleCount["count"] as! Int
appleCount.saveInBackground()
}
})
}
print(5/hhhh)

}

最佳答案

在我看来,您已经给出的答案很好地解释了该问题,我将尝试重新表述该问题以帮助您了解如何解决它。

getObjectInBackgroundWithId 函数在与当前运行的 print(5/hhhh) 语句不同的时间运行一个 block 。

因此,值“hhhh”正在更新,但是您尝试在 getObjectInBackgroundWithId 中的 block 有时间运行和更新之前调用 print 语句中的 hhhh 值。

换句话说,

print(5/hhhh)

在执行此代码块之前发生(由于后台线程的性质),

query.getObjectInBackgroundWithId("RhC25gVjZm", block: { (object: PFObject?, error: NSError?) -> Void in
if error != nil {
print(error)
} else if let appleCount = object {
appleCount["count"] = appleCount["count"] as! Int + 1
hhhh = appleCount["count"] as! Int
appleCount.saveInBackground()
}
})

一旦您知道 hhhh 变量已更新,利用该变量的一种方法是创建一个函数来使用(在您的情况下打印)该变量并在 block 内调用它,如下所示:

示例代码:

func doSomethingWithHHHH(){
print(5/hhhh)
}

query.getObjectInBackgroundWithId("RhC25gVjZm", block: { (object: PFObject?, error: NSError?) -> Void in
if error != nil {
print(error)
} else if let appleCount = object {
appleCount["count"] = appleCount["count"] as! Int + 1
hhhh = appleCount["count"] as! Int
//HERE YOU CALL ON THE FUNCTION TO USE THE VARIABLE
doSomethingWithHHHH()
appleCount.saveInBackground()
}
})

在此示例中,打印语句应该可以工作,因为在调用函数以使用“hhhh”变量之前,变量已在 block 中更新。

关于swift - 如何访问 Parse 的 getObjectInBackgroundWithId block 之外的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257941/

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