编辑:19.02.2019 我尝试了提供的解决方案。我选择了一个更简单的选项,将字典作为参数传递,并使用Alamofire的JSONEncoder将其转换为JSON对象。这是我尝试过的第一件事,但问题是,感谢大家的帮助。
我想将一个类对象发布到api,但是我正在努力将类型编码为JSON。
let jsonData = try JSONEncoder().encode(classObject)
let params = String(data: jsonData, encoding: .utf8)
Alamofire.request(shopSubmitURL, method: .post, parameters: params).responseString { response in
switch(response.result) {
case .success(_) :
if let data = response.result.value {
print("Successfully submitted class object: \(response.result.value)")
}
break
case .failure(_):
print(response.result.error)
break
}
我的classObject设置如下:
class classObject: NSObject, Codable {
var name : String = ""
var items : Array = [Int]()
}
我尝试将对象转换为具有扩展名的字典,但是当我这样做时,必须使用“ Any”或“ AnyObject”,这会导致“无法推断通用参数”错误。
此刻,我收到“调用中的额外参数'方法'”错误。
答案 0 :(得分:0)
详细观看:
AF.request(url: URLConvertible, method: HTTPMethod, parameters: Parameters?, encoding: ParameterEncoding, headers: HTTPHeaders?)
在Alamofire来源中,您可以看到public typealias Parameters = [String: Any]
这意味着您需要像使用它
AF.request("https://somewhere.com", method: .post, parameters: ["name":"Name", "items":[1,2,3,4]], encoding: JSONEncoding.default, headers: [/*headers if need, also Map*/])
答案 1 :(得分:-1)
正如乔希(Josh)所述,这个问题已经得到回答。但是为了方便您,我将推荐一些东西。
第一件事,我建议您使用struct
而不是课堂。 learn more
第二,您可能只需要一个简单的codable
对象,如下所示。
struct classObject: Codable {
let name : String
let items : [Int]
// CodingKeys are used to map with json keys
enum CodingKeys: String, CodingKey {
case name = "name"
case items = "itemsArr"
}
}
推荐链接CodingKeys