Alamofire上传参数如何添加Int值

How add Int value to the Alamofire upload parameters

我想将 Int 值添加到 multipartFormData:

Alamofire.upload(.POST,
                 url,
                 headers: headers,
                 multipartFormData: { multipartFormData in
                    //add some jpg image
                    //add other vaues:
                    for (key, value) in parameters {
                        if value is String {
                            multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
                        } else if value is Int {
                            let convertedValueNumber: NSNumber = NSNumber(int: value.intValue)
                            let data = NSKeyedArchiver.archivedDataWithRootObject(convertedValueNumber)
                            multipartFormData.appendBodyPart(data: data, name: key)
                        }
                    }

    }, encodingCompletion: { encodingResult in
      //some processing
})

但是服务器 return 错误,我没有发送 Int 值。如何将 Int 值添加到参数?

NSKeyedArchiver很好奇。通常你只发送字符串表示,例如:

Alamofire.upload(.POST, URL, headers: headers, multipartFormData: { multipartFormData in
    //add some jpg image
    //add other values:
    for (key, value) in parameters {
        if value is String {
            multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
        } else if value is Int {
            multipartFormData.appendBodyPart(data: "\(value)".dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
        }
    }
}, encodingCompletion: { encodingResult in
    //some processing
})

或者更简单,因为字符串插值适用于 StringInt

Alamofire.upload(.POST, URL, headers: headers, multipartFormData: { multipartFormData in
    //add some jpg image
    //add other values:
    for (key, value) in parameters {
        if value is String || value is Int {
            multipartFormData.appendBodyPart(data: "\(value)".dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
        }
    }
}, encodingCompletion: { encodingResult in
    //some processing
})

或者,在带有 Swift 3 的 Alamofire 4 中:

Alamofire.upload(multipartFormData: { multipartFormData in
    //add some jpg image
    //add other values:
    for (key, value) in parameters {
        if value is String || value is Int {
            multipartFormData.append("\(value)".data(using: .utf8)!, withName: key)
        }
    }
}, to: url, method: .post, headers: headers, encodingCompletion: { encodingResult in
    //some processing
})