我想将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
})
但服务器返回错误,我没有发送Int
值。如何在参数中添加Int
值?
答案 0 :(得分:14)
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
})
或者,甚至更简单,因为字符串插值适用于String
和Int
:
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
})
或者,在Alamofire 4中使用Swift 3:
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
})