2016-04-20 2 views
0

Je dois vérifier si l'image est nulle ou non, ce que j'ai assigné comme l'un des couples [clé, valeur] du dictionnaire. J'ai besoin d'envoyer le dictionnaire en tant que paramètre dans Alamofire Post Method. Mais je ne pouvais pas passer le paramètre. Je vais montrer ce que j'ai fait. Clarifie moi ce que j'ai mal fait! et donne moi la solution.Comment vérifier que l'image est nulle ou non?

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) 
      } 
     } 
    ) 

je rencontre une erreur dit, sélecteur non reconnu envoyé à une instance Je voudrais revenir à la réponse positive même si le profile_pic est nul ou non. J'obtiens la réponse de succès si j'ajoute l'image comme ceci multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn").

Le résultat final est que, la réponse devrait indiquer que l'enregistrement de l'utilisateur est réussi, même s'il télécharge l'image de profil ou non. Parce que c'est un champ optionnel non ?!

Répondre

2

Vous ne pouvez pas définir une clé comme nulle dans une collection de ce type. Vous devez vérifier pour voir si elle existe.

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

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

J'ai essayé de cette façon, mais je reçois cette erreur ** AlamofirePostMethod [1234: 123456] *** App terminant en raison de l'exception non interceptée 'NSInvalidArgumentException', raison: '- [UIImage dataUsingEncoding:]: sélecteur non reconnu envoyé à l'instance 0x7f84b24b8fc0 '** –

0

Après un moment, je suis tombé sur cette réponse. J'espère que cela t'aides. Oui, nous ne pouvons pas définir la valeur à zéro dans une collection selon Osez la réponse de. Mais nous pouvons ignorer la valeur si nous ne voulons pas que la valeur soit incluse dans le paramètre via un chaînage optionnel et un cast de type. Consultez ma réponse ici, how to pass a nil value for one of the parameter in alamofire Post request