Swift 使用 NSUserDefaults 在循环中保存 JSON 字符串

Swift Save JSON String in a Loop with NSUserDefaults

今天我想出了如何创建一个 for in 方法来获得不同的 json 值..但现在我不知道如何保存它以便在 NSUserDefaults 中可能有一个数组。这是我的代码的一部分:

 if let vehicles = jsonData["vehicles"] as? NSDictionary {
                let vehiclesKeys = vehicles.allKeys
                for key in vehiclesKeys {
                    let vehiclenodb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["vechicle_no"]! as! String
                    let modelnodb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["model_no"]! as! String
                    let variantdb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["variant"]! as! String
                    let colordb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["color"]! as! String
                    let datepurchasedb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["date_of_purchase"]! as! String
                    let insurancecompanynamedb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["insurance_company_name"]! as! String
                    let insuranceexpirydatedb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["insurance_expiry_date"]! as! String
                    let fueltypedb = ((jsonData ["vehicles"] as! NSDictionary)["\(key)"]! as! NSDictionary)["fuelType"]! as! String




                    var vehicleno:Void = save.setObject(vehiclenodb, forKey: "VehicleNumberSave")
                    var modelno:Void = save.setObject(modelnodb, forKey: "ModelNumberSave")
                    var variant:Void = save.setObject(variantdb, forKey: "VariantSave")
                    var color:Void = save.setObject(colordb, forKey: "ColorSave")
                    var datepurchase:Void = save.setObject(datepurchasedb, forKey: "DateofPurchaseSave")
                    var insurancecompanyname:Void = save.setObject(insurancecompanynamedb, forKey: "InsuranceCompanySave")
                    var insuranceexpirydate:Void = save.setObject(insuranceexpirydatedb, forKey: "InsuranceExpirySave")
                    var fueltype:Void = save.setObject(fueltypedb, forKey: "FuelTypeSave")

                    save.synchronize()




                }
            }

这个代码的问题是它保存了最后一个值,我需要保存两个值所以像 vehicleno 会像 = [1vehicle,2vehicle] 我该怎么做?

它肯定会保存最后一个值,因为您正在一次又一次地更新相同的 "Key"。

更好的选择是使用空字典向其中添加对象。

示例:

var myDict: NSDictionary = NSDictionary()

当一个循环完成后,将对象添加到字典中,如:

myDict.setValue("Vehicle1": [arrData])

在"arrData"中,您可以将您的车辆详细信息保存为

var arrData = NSMutableArray()
dict.addObject(vehicleno)

希望对您有所帮助!

例如,您必须在 for 循环上方创建可变数组

var answersArray : [String]

 answersArray = ["veh1", "veh2", "veh3", "veh4", "veh5", "veh6", "veh7"]

var arrayno = [String]()
for value in answersArray {
     arrayno.append(value)
     println(arrayno)
}

所以最后一个值将是

[veh1, veh2, veh3, veh4, veh5, veh6, veh7]

你可以存储整个数组....