I want to add Int
value to the multipartFormData
:
我想将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
})
But server return error that I don't send Int
value. How do I add Int
value to the parameters?
但服务器返回错误,我不发送Int值。如何将Int值添加到参数中?
1 个解决方案
#1
13
The NSKeyedArchiver
is very curious. Usually you'd just send string representation, e.g.:
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
})
Or, even simpler, because string interpolation works with both String
and Int
:
或者,甚至更简单,因为字符串插值适用于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
})
Or, in Alamofire 4 with Swift 3:
或者,在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
})
#1
13
The NSKeyedArchiver
is very curious. Usually you'd just send string representation, e.g.:
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
})
Or, even simpler, because string interpolation works with both String
and Int
:
或者,甚至更简单,因为字符串插值适用于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
})
Or, in Alamofire 4 with Swift 3:
或者,在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
})