swift - 在alamofire中发送数组数组
问题描述
我为一个快速的药物提醒项目工作,该应用程序可以离线和在线工作,因此用户可以保存很多提醒,一旦互联网可用,我需要将对象数组发送到 API。我正在使用 Alamofire 4.4,这是我获取参数并将其放入数组的代码
var medArrTosendToServer = [(_id:String, _timing:String)]()
func getParameters() -> [[String: AnyObject]] {
var result = [[String: AnyObject]]()
for med in medArrTosendToServer {
let medRes: [String: AnyObject] = [
"device_id": DEVICE_ID as AnyObject,
"userProfileID": userProfileID as AnyObject,
"medName": med._medName as AnyObject,
"timing": med._timing as AnyObject
]
result.append(medRes)
}
print(result)
return result
}
并在sned到服务器功能
func sendDataToServer() {
let param = getParameters()
Alamofire.request(URL_POST_UserProfile, method: .post, parameters: param )
.responseJSON
{ response in
switch response.result {
case .success( _):
if let JSON = response.result.value{
// here if success
}
case .failure(let error):
print(error)
// self.stopAnimating()
}
}
}else{
//self.stopAnimating()
}
}
但我收到一条错误消息,显示“调用中的额外参数'方法'”。所以如果有人有处理这个案子的想法,请与我分享
谢谢
解决方案
正如您所Alamofire
parameters
期望的那样,[String: Any]
您需要创建一个URLRequest
并添加您的Array
in 正文,如下所示:
func uploadDataToServer(dataToUpload: [[String: Any]], completionHandler:@escaping (Bool) -> ()){
let urlString = "Your url string"
guard let url = URL(string: urlString) else {
return
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
do {
request.httpBody = try JSONSerialization.data(withJSONObject: dataToUpload)
} catch let error {
print(error)
}
Alamofire.request(request).responseJSON{ (response) in
print("Success: \(response)")
switch response.result{
case .success:
if let statusCode: Int = response.response?.statusCode {
switch statusCode{
case 200:
completionHandler(true)
break
default:
completionHandler(false)
break
}
break
}
case .failure:
completionHandler(false)
break
}
}
}
也是[String: Any]
更好的选择,因为它可以存储价值,Any-Type
但AnyObject
只需要Object-Type
. 也不[[String: AnyObject]]
是Array
的Array
,是Array
的Dictionaries
。
推荐阅读
- python - 以稳健的方式解析带有转义字符的分隔字符串
- mongodb - 当同一字段存在重复项时,MongoDB 如何决定使用哪个单字段索引?
- sql-server - sql server 选择所有列中有 1 个值的行
- uwp - “FullTrustProcessLauncher”:不是类或命名空间名称
- mongodb - MongoDB 聚合 $or 与 $elemMatch, $expr 在 $lookup 管道中
- visual-studio - 如何在解决方案资源管理器中手动对文件夹进行排序?
- express-gateway - Express Gateway:使用 Request-Transformer 策略添加参数,但在条件下
- c - 如何重新分配参数?
- html - 如何从文本区域中的占位符中消除空格
- r - R lattice:如何添加带边框的空白图以填补定义布局的空白