如何为alamofire Post请求中的一个参数传递一个nil值

Pra*_*mar 10 parameters post swift alamofire

我想传递一个nil值,即可选参数值之一.并且必须在Alamofire Post请求中继续使用nil值.如果你告诉我下一步该如何进行会有所帮助吗?

    let image: UIImage = UIImage()
    let imageData = UIImagePNGRepresentation(image)
    let base64String = imageData?.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

    let parameters = [
        "first_name": "XXXXX",
        "email" : "1234@gmail.com",
        "password" : "password",
        "profile_picture" : base64String]

Alamofire.request(.POST, "http://abc/public/user/register", parameters: parameters, encoding: .JSON, headers: nil)

        .progress { bytesWritten, totalBytesWritten, totalBytesExpectedToWrite in
            print(totalBytesWritten)

            // This closure is NOT called on the main queue for performance
            // reasons. To update your ui, dispatch to the main queue.
            dispatch_async(dispatch_get_main_queue()) {
                print("Total bytes written on main queue: \(totalBytesWritten)")
           }
        }
        .responseJSON { response in
            debugPrint(response)
    }
Run Code Online (Sandbox Code Playgroud)

即使profile_pictures为空,响应也应该成功.我知道可以通过可选链接完成,但不知道如何继续!

Qam*_*mar 7

通过传递nil或未初始化的可选参数Server将获得Optional

您可以将NSNull()传递给字典

试试这个,就像

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

swiftyjson也将null作为NSNull处理

在快速语言中,这里有一个很好的引用 null/nil


Sah*_*hil -1

希望对你有帮助 :)

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 
} 
Run Code Online (Sandbox Code Playgroud)