Я работаю с 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)
Так что я подумал, когда я запустил приложение оператор печати будет распечатать ObjectId что Parse
дает вам, но это не делает. Если я добавлю оператор печати в закрытие, он определенно получит значение, которое я ожидаю. Кажется, что оператор print работает до того, как значение можно изменить. Любая идея, как это исправить? Я предполагаю использовать GCD
?
Все это находится внутри viewDidLoad()
Я считаю, что вы получите новый идентификатор объекта, когда вы запрашиваете объект назад от синтаксического анализа – Lamar
Thats потому что 'saveInBackgroundWithBlock' работает в другом потоке, который вызывается, когда процесс завершен, и вы выполняете' print (objectID) 'в' Main thread' –
Спасибо! Как я могу (не уверен, правильно ли я это задаю) переместить информацию об объекте, которая была изменена в закрытии основного потока, чтобы переменная обновлялась? –