我的问题如下:我有一个参数类,其中所有参数都有一个parentId,它确实是其他参数的objectId。我想写一个查询,在这里我可以得到所有这些父子关系相互连接的参数列表。所以,我有试过这种..为什么变量在循环内部的分析查询中使用时没有改变它的值
class ArgumentViewController: UIViewController {
var all = [String]()
var temporaryId = "vEKV1xCO09"
override func viewDidLoad() {
super.viewDidLoad()
for _ in 1...3 {
let query = PFQuery(className: "Argument").whereKey("objectId", equalTo: temporaryId)
query.findObjectsInBackground { (objects, error) in
if let arguments = objects {
for argument in arguments {
self.all.append(argument["parentId"] as! String)
print(self.all)
self.temporaryId = argument["parentId"] as! String
}
}
}
}
}
但问题temporaryId循环内不更新自身。它在所有迭代中都保持不变。因此,当我打印(self.all)我只是得到一个数组的3个字符串,都是我的初始参数的父亲
我的目标是获得一个数组,它是[我的初始参数的父项,我最初的论点,我父母的父母亲...]
我已经搜索了类似的主题,但找不到解决方案。任何帮助将非常感激。
所以你的问题是self.temporaryId = argument [“parentId”] as!字符串不会从“vEKV1xCO09”更改为其他内容是正确的吗? –
这是完全正确的 –
我想出了为什么但仍然找不到解决方案的原因。显然,由于“findObjectsInBackground”是一个异步查询,因此主线程在查询达到结论之前运行。我尝试使用“findObjects”而不是“findObjectsInBackground”,它给了我正在寻找的数组,但显着减慢了UI,给我一个“主线程正在执行长时间运行的操作”的警告。 –