Swift 为什么我的JSON对象元素只添加最后一个数组元素?

Swift 为什么我的JSON对象元素只添加最后一个数组元素?,swift,Swift,我的JSON对象有问题。除了idQty部分之外,创建和打印我的JSON对象一切都很好。它只打印最后一个键值结果。我想我的for循环有问题。如果有人能指出我哪里出了错,那将大有裨益 代码如下: struct Order: Codable { let idQty: [IdQty] let collection: String let name: String let phone: Int let doorNum: Int let street: Str

我的JSON对象有问题。除了idQty部分之外,创建和打印我的JSON对象一切都很好。它只打印最后一个键值结果。我想我的for循环有问题。如果有人能指出我哪里出了错,那将大有裨益

代码如下:

struct Order: Codable {
    let idQty: [IdQty]
    let collection: String
    let name: String
    let phone: Int
    let doorNum: Int
    let street: String
    let postcode: String
}

struct IdQty: Codable {
    let itemId: Int
    let qty: Int
}

class CheckoutServer: NSObject, URLSessionDataDelegate {

    var inputVals = [Int:Int]()

    var idQty = [IdQty]()

    var collection = String()
    var name = String()
    var phone = Int()
    var doorNum = Int()
    var street = String()
    var postcode = String()

    var request = URLRequest(url: NSURL(string: "http://192.168.1.100/api/AddOrder.php")! as URL)

    func downloadItems() {

        for(key,value) in inputVals {
            idQty = [IdQty(itemId: key,qty: value)]
        }

        let order = Order(idQty: idQty,collection: collection,name: name,phone: phone,doorNum: doorNum,street: street,postcode: postcode)
        let encodedOrder = try? JSONEncoder().encode(order)
        var json: Any?

        request.httpMethod = "POST"



        if let data = encodedOrder {
            json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments)
            if let json = json {

            }
        }
        let postParameters = "json="+String(describing: json!)

        request.httpBody = postParameters.data(using: .utf8)
        print(String(describing: json!))

        let defaultSession = URLSession(configuration: URLSessionConfiguration.default)

        let task = defaultSession.dataTask(with: request) { (data, response, error) in

            if error != nil {
                print("Failed to upload data at Menu Type Items")
            } else {
                print("Data uploaded")
            }
        }
        task.resume()
    }

}
下面是输出。“idQty”部分仅返回[Int:Int]字典中的最后一个条目:

 {
    collection = Delivery;
    doorNum = 4;
    idQty =     (
                {
            itemId = 14;
            qty = 2;
        }
    );
    name = James;
    phone = 4355345;
    postcode = Test;
    street = TestStreet;
}

您应该将新值附加到数组中,而不是在每次迭代时重新创建它

 for(key,value) in inputVals 
 {
        idQty.append(IdQty(itemId: key,qty: value))
 }

非常感谢,我觉得现在问这个问题很愚蠢:)标记了你的答案。祝你有美好的一天