クロージャで代入した変数を、クロージャーの外に持ち出したい
やりたいこと
URL(https://sample.com/sample.txt)にアクセスして、そのアドレスのテキストファイルの中身をtextView
に表示したい。
詰まっていること
クロージャの中ではテキストファイルの中身が表示されるのに、外に持ち出せない。クロージャ内でtextView.text
にwebString
を代入してみたが、textView
には何も表示されなかった。
教えてほしいこと
クロージャの外への変数の持ち出しかた。そもそも、これはクロージャであっているのでしょうか?
@IBOutlet weak var textView: UITextView!
var webString = "default"
override func viewDidLoad() {
super.viewDidLoad()
let urlString = "https://sample.com/sample.txt"
let textUrl = NSURL(string: urlString)
NSURLSession.sharedSession().dataTaskWithURL(textUrl!) { (data, response, error) -> Void in
self.webString = String(data: data!, encoding: NSUTF8StringEncoding)!
print(self.webString) //この時点ではwebStringにテキストファイルの中身が代入されており、きちんとログ出力される。
}.resume()
self.textView.text = self.webString //webStringにテキストファイルの中身が代入されておらず、textViewには初期値の「default」が表示される。
}