如何使用alamofire的Multipart表单数据发送嵌套数组参数

时间:2016-07-17 16:28:42

标签: swift multidimensional-array alamofire multipartform-data

如何将此参数发送到多部分

    let dictionary = [
        "user" :
            [
                "email" : "\(email!)",
                "token" : "\(loginToken!)"
        ],
        "photo_data" :[
            "name" : "Toko Tokoan1",
            "avatar_photo" : photo,
            "background_photo" : photo,
            "phone" : "0222222222",
            "addresses" :[[
                "address" : "Jalan Kita",
                "provinceid" : 13,
                "cityid" : 185,
                "postal" : "45512"
                ]],
            "banks" :[[
                "bank_name" : "PT Bank BCA",
                "account_number" : "292993122",
                "account_name" : "Tukiyeum"
                ]]

        ]

    ]

我尝试了以下代码,但我无法将值(在NSDic中)编码为utf 8

        for (key, value) in current_user {
            if key == "avatar_photo" || key == "background_photo"{
            multipartFormData.appendBodyPart(fileURL: value.data(using: String.Encoding.utf8)!, name: key) // value error because its NSDic
            }else{
             multipartFormData.appendBodyPart(data: value.data(using: String.Encoding.utf8)!, name: value) // value error because its NSDic
            }

        }
附加正文部分中的

value不能使用,因为它的NSDictionary不是字符串。如何将该参数放在multipartformdata中的正确方法?

1 个答案:

答案 0 :(得分:1)

允许嵌套的多部分。

  

明确允许在另一个多部分实体的正文部分中使用多部分的内容类型。在这种情况下,出于显而易见的原因,必须注意确保每个嵌套的多部分实体必须使用不同的边界定界符。

RFC 1341

所以你必须在外循环上做同样的事情:简单地循环生成键值对的字典内容。显然,您必须设置不同的部件分隔符,因此客户端可以将嵌套的部件更改与顶级部件更改区分开来。

将整个结构作为application / json发送可能更容易。