使用 Alamofire 在多形式 Swift 的参数中附加嵌套对象

2024-01-18

我正在使用“Content-type”上传多个图像以及 JSON 数据:“multipart/form-data” 我的问题是,我有嵌套对象要传递给参数 我一直在寻找解决方案,我发现的是带有 String 或 Int 数组的嵌套数据,而不是另一个自定义对象(我为此苦苦挣扎了很长时间)

struct Car: Codable{
    var id :Int,
    var name:String,
    var address:String,
    var new:Bool
    var users:[User]
}

struct User: Codable{
    var id :Int,
    var name:String,
    var address:String,
    var age:Int
}

我想将数据转换成字典以将其用作参数

func addNewCae(newCar:Car, images:[UIImage]){

    let encoder = JSONEncoder()
    let jsonData = try! encoder.encode(newCar)


    let test = convertStringToDictionary(text: jsonData)
    print(test)


    let headers: HTTPHeaders
    headers = ["Content-type": "multipart/form-data",
                         "Content-Disposition" : "form-data"]
    AF.upload(multipartFormData: { multipartFormData in
        for imageData in images {
            guard let imgData = imageData.pngData() else { return }
            multipartFormData.append(imgData , withName: "images[]", fileName: "image.jpeg", mimeType: "image/jpeg")
        }

        for (key, value) in self.convertStringToDictionary(text: jsonData)! {
            multipartFormData.append("\(value)".data(using: .utf8)!, withName: key)

        }


    },to: "\(url)", usingThreshold: UInt64.init(),
      method: .post,
      headers: headers).responseString{ response in
        switch response.result {
        case .success(let value):
            print(value)
            break
        case .failure(let error):
            print(error)
        }
    }

}

func convertStringToDictionary(data: Data) -> [String:AnyObject]? {
    do {
        let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:AnyObject]
        return json
    } catch {
        print("Something went wrong")
    }
    return nil
}

作为我的代码的请求:除用户字段外,所有汽车字段都在数据库中注册 (实际上,我有更多的领域) 为什么参数中没有添加用户字段?
任何想法?

用户提交的参数通常为 [[String: AnyObject]] 类型 这是我将其转换为字典后的数据

Optional(["name":"whatever" , "address": "here", "users": <__NSArrayM 0x6000008e4f90>(
{
    "name" = "hello";
    "address" = "there";
    "age" = 20;
},
{
  "name" = "hi";
    "address" = "location";
    "age" = 25;
}
)
, "new": 0])

希望足够清楚,如果需要更清楚,我可以添加任何进一步的代码或信息 谢谢

Update

我手动进行了编码,所以现在我有了 [String: AnyObject] 类型的正确字典格式,但其中之一是嵌套的:

["name":"whatever" , "address": "here", "users": [
    [
        "name" = "hello";
        "address" = "there";
        "age" = 20;
    ],
    [
      "name" = "hi";
        "address" = "location";
        "age" = 25;
    ]
    ]
    , "new": 0]

但是,“用户”字段仍然无法读取,我想是因为参数不支持这种类型?
有人知道如何处理这些嵌套对象吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Alamofire 在多形式 Swift 的参数中附加嵌套对象 的相关文章

随机推荐