繁体   English   中英

如何使用alamofire快速发布字典数组(json对象)?

[英]How to post an array of dictionary (json object), in swift using alamofire?

我需要如何发布请求: 我需要如何发布请求

它在数据库中的外观: 它在数据库中的外观

您好,我正在开发食品应用,我需要将订单详细信息发送到数据库。 为此,我创建了一个数据类型,例如

class orderModel : NSObject {

var menu_name : String = ""

var quantity : Int = 0

var price : Double = 0.0

var menu_id : String = ""

init?(menu_name : String,menu_id : String, price : Double,  quantity : Int) {

    guard !menu_id.isEmpty else{
        return nil
    }

    self.menu_name = menu_name
    self.menu_id = menu_id
    self.price = price
    self.quantity = quantity

  }

}

这个。 然后我下订单,

 let parameters : Parameters = [
                    "custid" : defaults.object(forKey: "userid")!,
                    "carttotal" : Int(totalPrice),
                    "cartitems" : ordersArray,
                    "deliverytime" : timeSlot,
                    "custaddress" : custAdd!,
                    "areacode" : defaults.object(forKey: "areaCode")!
                ]

    Alamofire.request(orderPlaceURL, method: .post, parameters: parameters).responseJSON { response in

        print((response.result.value)!)

    }
    totalPrice = 0.0
    ordersArray.removeAll()

发布的数据应该看起来像第一个图像,但是当输入到数据库中时,它显示的像第二个图像。 代替数组元素,只有单词“ Array”。 谁能建议我该怎么办?

Alamofile参数对象的类型为[String: Any] ,这不是您想要的类型。 而是制作一个包含多个字典的数组,并将其传递给此函数:

func uploadDataToServer(endPoint: String, dataToUpload: [[String: Any]], completionHandler:@escaping (Bool) -> ()){

    let url = Config.BASE_URL + endPoint

    var request = URLRequest(url: URL.init(string: url)!)
    request.httpMethod = "POST"

    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    let dataToSync = dataToUpload
    request.httpBody = try! JSONSerialization.data(withJSONObject: dataToSync)

    Alamofire.request(request).responseJSON{ (response) in

        print("Success: \(response)")
        switch response.result{
        case .success:
            let statusCode: Int = (response.response?.statusCode)!
            switch statusCode{
            case 200:
                completionHandler(true)
                break
            default:
                completionHandler(false)
                break
            }
            break
        case .failure:
            completionHandler(false)
            break
        }
    }
}

您的数组应为:

var uploadArray = [[String: Any]]()
let ordersDictionary = [
                    "custid" : defaults.object(forKey: "userid")!,
                    "carttotal" : Int(totalPrice),
                    "cartitems" : ordersArray,
                    "deliverytime" : timeSlot,
                    "custaddress" : custAdd!,
                    "areacode" : defaults.object(forKey: "areaCode")!
                ]

uploadArray.append(ordersDictionary)

然后将uploadArray传递给上述函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM