Я создал пару глобальных переменных для своего приложения, чтобы загрузить изображение, а также строку. Когда я пытаюсь изменить значение, они остаются неизменными. Значение не изменяется после того, как метод didSelectRowAtIndexPath называется, он все еще «начальный».Глобальные переменные в swift не изменяются
import UIKit
var testString = "initial"
class SubjectsViewController: UIViewController {
.....
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
imageFiles[indexPath.row].getDataInBackgroundWithBlock { imageData, error in
if (error == nil) {
selectedPhoto = UIImage(data: imageData)!
println("Should change variables")
testString = "testing"
println("no error in fetching image")
} else {
println("There is an error getting image")
}
}
self.performSegueWithIdentifier("detailSegue", sender: self)
}
Вы имеете в виду, что не установлен после того, как вам вызвать асинхронную функцию? – Wain
Как вы проверили, что значение не меняется? Знаете ли вы, что 'getDataInBackgroundWithBlock' работает * асинхронно *? Закрытие (которое изменяет глобальную переменную) вызывается в более позднее время, когда данные были получены. - Lookup «возвращаемое значение из асинхронного метода», существует много подобных вопросов и ответов. –
Я был проверен, что глобально объявленная переменная мы можем делать изменения с этим объектом. лучше проверить его правильно. – NRV