2016-04-20 3 views
0

Мне нужно проверить, нет ли ни одного изображения, которое я назначил одной из пары [ключ, значение] в словаре. Мне нужно отправить словарь в качестве параметра в Alamofire Post Method. Но я не мог передать параметр. Я покажу, что я сделал. Уточните меня, что я сделал не так! и дать мне решение.Как проверить изображение нуль или нет?

var parameters: [String : AnyObject ] = [ 
     "email" : "[email protected]", 
     "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 равен нулю или нет. Я получаю ответ успеха, если я добавляю изображение следующим образом: multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn").

Конечным результатом является то, что ответ должен сказать, что регистрация пользователя успешна, даже если он загружает изображение профиля или нет. Потому что это поле необязательное?

ответ

2

Вы не можете установить ключ в нуль в подобной коллекции. Вам нужно проверить, существует ли он.

var parameters: [String : AnyObject ] = [ 
    "email" : "[email protected]", 
    "password" : "password", 
    "full_name": "XXX", 
] 

if let image = UIImage(named: "abc") { 
    parameters["profile_pic"] = image 
} 
+0

Я пробовал этот путь, но я получаю эту ошибку ** AlamofirePostMethod [1234: 123456] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [UIImage dataUsingEncoding:]: непризнанный селектор, отправленный в экземпляр 0x7f84b24b8fc0 '** –

0

Через некоторое время я наткнулся на этот ответ. Надеюсь это поможет. Да, мы не можем установить значение nil в коллекции в соответствии с ответом Dare. Но мы можем пропустить значение, если мы не хотим, чтобы значение включалось в параметр с помощью опционального цепочки и типа литья. Обратите внимание на мой ответ здесь: how to pass a nil value for one of the parameter in alamofire Post request