Я использую AWS для размещения изображений для моего приложения iOS. Сейчас я пытаюсь перечислить все объекты в ведре S3.Swift - Variable не сохраняет значение
Вот мой код:
var description = ""
AWSS3.registerS3WithConfiguration(serviceConfig2, forKey: "s3")
AWSS3.S3ForKey("s3").listObjects(objectList).continueWithBlock { (task: AWSTask!) -> AnyObject! in
if task.error != nil {
println(task.error)
}
if task.result != nil {
description = task.result!.description
println(description)
}
return nil
}
println(description == "")
Выход true
с последующим правильным содержанием task.result!.description
. Другими словами, println за пределами continueWithBlock сначала печатает, а description
не был обновлен в это время.
Как я могу что-то делать с description
за пределами continueWithBlock?
Это не работает. Когда задана переменная 'description', метод didSet не вызывается, но если я поместил' println (description) 'после инициализации переменной, тогда он корректно выполнит' println' – Infamous911
. Это зависит от того, где у вас есть переменная определяется, например, если у вас есть переменная, определенная вне области действия функции, которая запускает задачу asynch, тогда она будет вызвана. Если вы определяете его внутри функции, которая заканчивается до того, как будет установлена переменная, она никогда не будет вызвана. Короткий ответ, укажите описание переменной экземпляра. Кроме того, см. Ответ @Duncan C и ссылку –
Хорошо, да, я получил его, чтобы работать сейчас, спасибо. Вопрос в том, что у меня есть куча кода после этого continueWithBlock, мне просто нужно все это поместить в методе didSet переменной? (Материал после того, как он продолжаетWithBlock частично зависит от результатов continueWithBlock) – Infamous911