how to pass a nil value for one of the parameter in alamofire Post request

后端 未结 4 1302
不思量自难忘°
不思量自难忘° 2021-01-17 16:02

I would like to pass a nil value i.e., optional to one of the parameter value. And it must proceed with the nil value in the Alamofire Post request .It woul

相关标签:
4条回答
  • 2021-01-17 16:35

    hope this will help you :)

    var parameters :[String : AnyObject?] = [
        "first_name": "XXXXX",
        "email" : "1234@gmail.com",
        "password" : "password"]
    
    if let string = base64String where base64String.isEmpty != false {
      parameters["profile_picture"] = string 
    } 
    
    0 讨论(0)
  • 2021-01-17 16:40

    I think your simplest answer would be to add "profile_picture" as a second step.

    var parameters = [
        "first_name": "XXXXX",
        "email" : "1234@gmail.com",
        "password" : "password"]
    
    if let base64String = base64String where !base64String.isEmpty {
        parameters["profile_picture"] = base64String
    }
    
    0 讨论(0)
  • 2021-01-17 16:42

    By passing nil or uninitialized optional parameter Server will get Optional

    You can pass NSNull() to dictionary

    try this, like

    var params = ["paramA","valueA"] if imageBase64 == nil {   parms["image"] = NSNull()} else {   params["image"] = imageBase64 }
    

    swiftyjson also handle null as NSNull

    also there is good reference here null / nil in swift language

    0 讨论(0)
  • 2021-01-17 16:51

    After a very thorough research, I found out it can be done easily through optional chaining and type casting.

    The first step it to divide the parameters by type casting it to string and Image and check for the availability of String value and Image value.

    let parameters: [String : AnyObject? ] = [
        "first_name": "XXXXX",
        "email" : "1234@gmail.com",
        "password" : "password",
        "profile_pic" : UIImage(named: "logo")]
    

    Do it like this in the request method

    for (key, value) in parameters {
    
                    if let value1 = value as? String {
                        multipartFormData.appendBodyPart(data: value1.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
                    }
                    if let value1 = value as? UIImage {
                      let imageData = UIImageJPEGRepresentation(value1, 1)
                          multipartFormData.appendBodyPart(data: imageData!, name: key, fileName: "logo.png" , mimeType: "image/png")
                        }
    

    You don't have to split the parameters into two, one for the string values and other for the image and also it is unnecessary to convert the image to string. Hope this solution helps!!

    0 讨论(0)
提交回复
热议问题