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

詹姆士

我的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;
}
安德烈·切尔努卡(Andrey Chernukha)

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Swift中获取数组的最后一个元素?

如何在Swift中将Array的第一个和最后一个元素放入

如何确定一个数组是否包含Swift中另一个数组的所有元素?

如何在Swift中使用另一个数组中的元素过滤数组?

获取对数组的第一个元素(Swift)

Swift scrollview分页仅显示数组中的最后一个图像

为什么我不能使用间接操作符取消对一个对象的指针,该对象是一个数组元素?

用分隔符“,”连接字符串数组,然后添加“和”以连接Swift中的最后一个元素

添加多个数组以形成一个最终数组。调试Swift XCode

为什么必须在Swift中创建一个向数组添加项目的函数?

Swift:合并具有相同键的数组的自定义对象元素

在Swift中使用条件时删除集合的最后一个元素

Swift-按另一个数组的属性对对象数组进行排序

如何屏蔽Swift中的最后一个数字?

为什么此代码仅显示数组中的最后一个元素?

如何在Swift iOS中比较两个数组并从一个数组中删除匹配元素

为什么我需要一个位运算符来访问最后一个数组元素?

如何在另一个数组中存储数组的对象元素个数?

在Swift中将最后一个数组元素分配给变量

在Swift 2.0中过滤数组中的重复项并从另一个数组中删除数组元素

为什么我的程序仅打印出数组的最后一个对象值?

通过对其他两个数组的所有元素应用二进制运算,在Swift中创建一个数组

如何根据另一个数组 swift 3 在数组中包含元素

swift - 最后一个数组结果是仅在 tableview 中显示的结果

Swift:为什么在使用追加时没有元素添加到我的数组中?

为什么这个数组的最后一个元素被拼接而不是中间的一个?

Swift 数组只打印最后一个元素

为什么我只能在 swift 5 的表视图中看到数组的最后一个元素?

通过在 Swift 中混合元素将多个数组合并为一个数组?