常量在Swift

时间:2016-05-17 12:43:20

标签: ios swift null nsurlsession

有没有人知道为什么让数据变为零,我收到消息"致命错误:在打开一个Optional值时意外发现nil"在我运行以下功能后?

let session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"

    request.addValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in

        let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)!

        let codexxx = String(strData)
        let serverResponse = ServerResponseHandler()
        let number =  serverResponse.removeCodeFromXML(codexxx)
        let data = number.dataUsingEncoding(NSUTF8StringEncoding)

        self.posts = []
        self.parser = NSXMLParser(data: data!)
        self.parser.delegate = self

        print ("NUMBER: \(number)")

        let success:Bool = self.parser.parse()
        if success {
            print("parse success!")
           } else {
            print("parse failure!")
        }
        print("Response!: \(strData)")
    })
    task.resume()  
}

运行后我是否需要关闭对象或功能?我真的很无能为力。

2 个答案:

答案 0 :(得分:0)

completionHandler的data参数具有可选类型NData?(请参阅docs),因此在使用{{1}打开可选项之前,您可能需要检查它是否为nil或者做类似的事情:

!

答案 1 :(得分:0)

每当连接失败时,您将获得一个nil数据对象。您应该始终检查A.是否有错误对象,以及B.响应的状态代码是200.如果出现错误,或者状态代码不是200,您甚至可能根本不需要查看数据。