Swift 为什么我的JSON对象元素只添加最后一个数组元素?
我的JSON对象有问题。除了idQty部分之外,创建和打印我的JSON对象一切都很好。它只打印最后一个键值结果。我想我的for循环有问题。如果有人能指出我哪里出了错,那将大有裨益 代码如下: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
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))
}
非常感谢,我觉得现在问这个问题很愚蠢:)标记了你的答案。祝你有美好的一天