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

时间:2018-02-12 05:25:04

标签: ios swift3 httprequest alamofire

我如何发布请求: How I need to post the request

它在数据库中的外观: how it looks in the database

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

的数据类型
ng serve

此。我随后下订单,

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

  }

}

发布的数据应该看起来像第一张图像,但是当它输入数据库时​​,它会像第二张图像一样显示。而不是数组元素,只是单词“数组”。任何人都可以建议我做什么?

1 个答案:

答案 0 :(得分:0)

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传递给上述功能。