对不起我的虚拟问题,但我是新的Swift开发,我有一个Swift 1.1项目工作正常,但升级到Xcode后为7.3。 1(和Xcode 2.2.1)我的项目是成功建立,但同时用下面的代码运行它(在令请求线),我得到一个错误:Swift 2.2:致命错误:意外地发现零,同时展开一个可选值
// Send HTTP GET Request
let request = NSURLRequest(URL: NSURL(string: "http://11.22.33.44:8080/MySRV/login?email=\(emailField.text)&password=\(pwdField.text)")!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{
(response: NSURLResponse?, data: NSData?, error: NSError?)-> Void in
print("response \(response?.description)")
的错误是:
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) fatal error: unexpectedly found nil while unwrapping an Optional value
我可以想象,我的请求是零,但我不知道如何解决它。
感谢您的帮助。
您可以通过调试解决它。首先找出什么是零,请求?如果是这样,为什么它可能是零。可能是因为emailField.text是零?如果是这样,为什么这可能是零,在哪里以及如何设置?或者,也许是因为pwdField.text是零,如果是这怎么可能是零?它在哪里设置?它为什么没有价值等等。这些都是你可以问问自己的问题,如果你尝试,可以回答自己。这是调试。 – Gruntcakes
三个无关的观察:1.现在不推荐使用'NSURLConnection',所以你现在应该使用'NSURLSession'(或者在Swift 3中,'URLSession')。 2.你不应该在URL中包含密码。你应该建立一个POST请求并在请求的主体中包含这两个参数。我假设您的最终服务器将采用HTTPS,但无论建议不要将敏感信息放入URL中,因为一些旧的代理服务器可能会捕获这些信息。你应该百分比转义电子邮件地址和密码。如果它们包含保留字符(特别是'+'或'&'),将会失败。 – Rob
感谢罗布,我将使用NSURLSession。正如我告诉你的,我是一个快速入门的初学者,所以任何建议都非常值得欢迎 – tiamat