1

以下行在模拟器中工作得很好,但在实际设备上却不行。它给了我错误:fatal error: unexpectedly found nil while unwrapping an Optional value

var urlData:NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)!

另一个项目中的原始文件最后没有!,它在 beta5 中 100% 工作,现在在 beta6 中,除非我把它放进去,否则它会抛出错误。它仍然可以在模拟器中工作,但不能在我的 iPhone 上?

有任何想法吗?

4

1 回答 1

1

我认为当您在设备中运行时,您的应用程序中一定有问题(例如它连接到的 URL/IP)。

如果它抛出该错误,则意味着sendSynchronousRequest返回 nil。我的建议是:

  • make urlDataoptional var urlData: NSData? = ...,稍后检查它是否有值
  • 检查您连接的服务器和/或请求中的参数是否正确

不要对可以为 nil 的值使用强制展开,这一点非常重要。这总是会产生运行时错误,所以我认为这是一种不好的做法。您应该将强制展开限制在您 100% 确定可选具有值的情况下,例如当您明确检查该选项而不使用可选绑定时。

至于服务器/请求检查,我经常在模拟器中运行时向本地开发服务器发出请求,在使用设备时向生产或登台远程服务器发出请求。也许你在你的代码中做类似的事情。

于 2014-08-31T15:23:50.037 回答