Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将类对象转换为Alamofire的JSON_Ios_Swift_Alamofire_Jsonencoder - Fatal编程技术网

Ios 如何将类对象转换为Alamofire的JSON

Ios 如何将类对象转换为Alamofire的JSON,ios,swift,alamofire,jsonencoder,Ios,Swift,Alamofire,Jsonencoder,编辑:19.02.2019 我尝试了提供的解决方案。我选择了一个更简单的选项,将字典作为参数传递,并使用Alamofire的JSONEncoder将其转换为JSON对象。这是我尝试过的第一件事,但问题是感谢大家的帮助 我想将一个类对象发布到api中,但我正在努力处理类型并将其编码为JSON let jsonData = try JSONEncoder().encode(classObject) let params = String(data: jsonData, encoding: .utf8

编辑: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
            }
我的类对象设置如下:

class classObject: NSObject, Codable {
    var name : String = ""
    var items : Array = [Int]()
}
我曾尝试将对象转换为具有扩展名的字典,但当我这样做时,我必须使用“Any”或“AnyObject”,这会导致“无法推断通用参数”错误


现在我得到了call中的'extra-argument'方法。

正如Josh提到的,这个问题已经得到了回答。但是为了让你快点,我推荐几样东西

首先,我建议您使用struct而不是class

其次,您可能只需要一个简单的可编码对象,如下所示

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"
    }

}
推荐链接

让我们详细观看:

AF.request(url: URLConvertible, method: HTTPMethod, parameters: Parameters?, encoding: ParameterEncoding, headers: HTTPHeaders?)
在Alamofire资源中,您可以看到公共typealias参数=[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*/])

该错误的可能重复必须与您的Alamofire调用有关,而不是json编码Josh-我认为这可能有答案,但我使用的是swift 4,不清楚我是否应该使用JSONSerialization或其他方法。Joakim-每当参数不是合适的json对象时,我都会收到Alamofire错误。我正在努力从我的类对象生成正确的JSON对象。