我遇到了一个小问题,让我从代码开始
class ViewController: UIViewController {
@IBOutlet weak var LBoutput: UILabel!
@IBAction func BTclick(sender: AnyObject) {
var url = NSURL(string: "http://google.com")
println("test0")
let getdata = NSURLSession.sharedSession().dataTaskWithURL(url){(data ,response , error) in
var htmlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
println("test1")
println("test2")
self.LBoutput.text = "test6"
}
println("test3")
getdata.resume()
println("test4")
LBoutput.text = "test5"
}
Run Code Online (Sandbox Code Playgroud)
这段代码在控制台中给我一个输出
test0
test3
test4
test1
test2
此外,标签没有时间更新为"test5",但更新为"test6"的标签需要30秒.
我不知道为什么这需要这么长时间,任何人都有想法?
这个看似简单的问题让我发疯了......我正在玩SwiftyJSON来获取远程数据,这里是我在Swift中的ViewController类的一个片段:
override func viewDidLoad() {
super.viewDidLoad()
self.statusLabel.text = "welcome"
RemoteDataManager.getStatusUpdateFromURL { (statusData) -> Void in
let json = JSON(data: statusData)
self.statusLabel.text = "this does not work"
self.statusLabel.text = self.getMostRecentStatusUpdate(json) // also does not work
}
}
Run Code Online (Sandbox Code Playgroud)
statusLabel文本设置为"welcome",但之后不会更改.不过好笑的是,什么我把里面的func getMostRecentStatusUpdate(_:)与println()被打印到控制台正确,即使它来自远程JSON源(即我知道,此功能).我的问题是我无法将文本打印到UILabel而不是控制台.我没有收到任何错误消息.
我还不熟悉类似的Swift函数MyClass.myMethod { (myData) -> Void in .... },我不明白这里出了什么问题.有任何想法吗?