为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?
Posted
技术标签:
【中文标题】为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?【英文标题】:Why I get this error while trying to make post request to a server in iOS Swift: unexpectedly found nil while unwrapping an Optional value?为什么我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil? 【发布时间】:2016-01-02 15:40:12 【问题描述】: func uploadImage(var image:UIImage)
var imageData = UIImagePNGRepresentation(image)
let base64String = imageData!.base64EncodedStringWithOptions([.Encoding64CharacterLineLength])
let parameters = [
"img": base64String
]
Alamofire.request(.POST, API_URL, parameters:parameters) .response
(request, response, data, error) in
图像不为零。而且我找不到哪个值实际上是 nil。
【问题讨论】:
好吧,就像它说的,你的一些变量/常数是零。 imageData 是零吗?它是您在此处打开代码的唯一一个 您提到的image不是nil,我假设您在谈论参数image,请您调试一下从image中提取的imageData是有效还是nil值。如果是这种情况,在 nil 上调用 base64EncodedStringWithOptions 会导致问题 imageData 不是 nil :( 你 100% 确定吗?您是否添加了print
声明?请包括它崩溃的确切行,而不是“仅”给出错误消息。
Alamofire 发生了什么?还有什么叫uploadImage,图片来自哪里?
【参考方案1】:
imageData 可能为零。始终进行 nil 检查并避免展开。
func uploadImage(var image:UIImage)
if let imageData = UIImagePNGRepresentation(image), let base64String = imageData.base64EncodedStringWithOptions([.Encoding64CharacterLineLength])
let parameters = [
"img": base64String
]
Alamofire.request(.POST, API_URL, parameters: parameters) .response
(request, response, data, error) in
【讨论】:
imageData 不是 nil :( 我查过了。 那么你需要单步执行你的代码并检查它是什么,在这个函数的第一行设置一个断点并单步执行它。以上是关于为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 iOS 上从 Swift 调用服务时收到 SSL 错误?
如何在 React Native 中向 API 发出 POST 请求?
如何在 Bluemix 中向节点应用程序发出 cors 请求