2015-05-24 129 views
0

我刚开始学习Swift,并且我有点困惑。我试图在if语句中设置一个变量,但它不这样做,它不会返回任何错误。我不知道我是否正确解释这一点,但这里是我的代码和输出:在Swift中设置变量if语句

var lol:String = "123"; 

func initiateconnection(){ 
    let url = NSURL(string: "http://www.google.com/") 

    let session = NSURLSession.sharedSession().dataTaskWithURL(url!){  
     (data,response, error) in 

    if error == nil{ 
     var htmldata = NSString(data: data, encoding: NSUTF8StringEncoding) 

     lol += "0";    
    } 
    else{    
     println("error in connecting"); 
    }   
    } 

    session.resume(); 
    println(lol);  
} 

输出为123

为什么它不是1230?

如果我在if语句中执行println,那么我的语句就会启动。

(我的目标是把HTML存储在一个变量,在其他功能上使用它,但我没有数的东西,使其更容易理解。)

+6

'dataTaskWithURL()'方法*异步*工作,这个问题已经被重复询问和回答了 –

+1

异步代码不运行同步usly。 – nhgrif

回答

3

您所做的URL请求是异步所以将发生在你的println命令发生后,看到你可以在竞争块内添加另一个打印语句(在你有lol + ='0'的地方,你会看到Xcode会先打印123,然后在1230之后打印, Xcode从URL请求中得到响应,我希望能回答你的问题