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]
你可以存储整个数组....
今天我想出了如何创建一个 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]
你可以存储整个数组....