我正在使用Parse
,我正在尝试存储Parse
为您提供的对象唯一标识符。这是帮助理解这一点的代码。
var objectID = ""
var object = PFObject(className: "class")
object["columnTitle"] = "String Data"
object.saveInBackgroundWithBlock { (success, error) -> Void in
guard error == nil else {
print("Error")
return
}
objectID = object.objectId!
}
print(objectID)
所以我想当我运行app时,print语句会打印出Parse
给你的objectId,但事实并非如此。如果我在闭包内添加print语句肯定会得到我期望的值。看起来print语句在值可以更改之前运行。知道如何解决这个问题吗?我假设使用GCD
?
所有这些都在viewDidLoad()
答案 0 :(得分:1)
saveInBackgroundWithBlock
是异步调用。如果在块中打印对象ID,则会在另一个线程中执行块时打印它。
如果将print
放在块外,它将是调用saveInBackgroundWithBlock
后执行的紧接下一个语句。您应该在这两个语句中放置断点并理解行为。
您可以定义一个方法,其中包含与对象ID相关的处理代码,并在saveInBackgroundWithBlock