有没有人知道为什么让数据变为零,我收到消息"致命错误:在打开一个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()
}
运行后我是否需要关闭对象或功能?我真的很无能为力。
答案 0 :(得分:0)
completionHandler的data
参数具有可选类型NData?
(请参阅docs),因此在使用{{1}打开可选项之前,您可能需要检查它是否为nil或者做类似的事情:
!
答案 1 :(得分:0)
每当连接失败时,您将获得一个nil数据对象。您应该始终检查A.是否有错误对象,以及B.响应的状态代码是200.如果出现错误,或者状态代码不是200,您甚至可能根本不需要查看数据。