如何检查图像是不是为零?
Posted
技术标签:
【中文标题】如何检查图像是不是为零?【英文标题】:How to check the image is nil or not?如何检查图像是否为零? 【发布时间】:2016-04-20 14:11:54 【问题描述】:我需要检查图像是否为零,我将其分配为字典中的 [key, value] 对之一。我需要将字典作为 Alamofire Post Method 中的参数发送。但我无法传递参数。我会展示我所做的。澄清我做错了什么!并给我解决方案。
var parameters: [String : AnyObject ] = [
"email" : "123@gmail.com",
"password" : "password",
"full_name": "XXX",
"profile_pic" : UIImage(named: "abc")!
]
Alamofire.upload(
.POST,
"http://abc/public/user/register",
multipartFormData: multipartFormData in
for (key, value) in parameters
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
,
encodingCompletion: encodingResult in
switch encodingResult
case .Success(let upload, _, _):
upload.responseJSON response in
debugPrint(response)
case .Failure(let encodingError):
print(encodingError)
)
我遇到一个错误说,无法识别的选择器发送到一个实例我想得到成功的响应,即使 profile_pic 是否为 nil。如果我像这样附加图像,我会得到成功响应
multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn")
.
最终结果是,无论用户是否上传头像,响应都应该说用户注册成功。因为它是一个可选字段对吧?!
【问题讨论】:
【参考方案1】:您不能在这样的集合中将键设置为 nil。您需要检查它是否存在。
var parameters: [String : AnyObject ] = [
"email" : "123@gmail.com",
"password" : "password",
"full_name": "XXX",
]
if let image = UIImage(named: "abc")
parameters["profile_pic"] = image
【讨论】:
我试过这种方式,但我得到了这个错误 AlamofirePostMethod[1234:123456] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UIImage dataUsingEncoding:]:无法识别选择器发送到实例 0x7f84b24b8fc0'【参考方案2】:过了一会儿,我遇到了这个答案。希望这可以帮助。是的,我们不能按照 Dare 的回答将集合中的值设置为 nil。但是如果我们不希望通过可选链接和类型转换将值包含在参数中,我们可以跳过该值。在这里查看我的答案,how to pass a nil value for one of the parameter in alamofire Post request
【讨论】:
以上是关于如何检查图像是不是为零?的主要内容,如果未能解决你的问题,请参考以下文章