保存乘法数组 Swift
Save the multiply array Swift
我尝试添加多个数组,但它删除了旧数组并创建了新数组。如何向 UserDefaults 添加更多/插入另一个数组?这是我的代码:
let foodArray = ["Title": String(fShop_TitleInput.text ?? ""), "QTY": String(fShop_QTYInput.text ?? ""), "Price": String(fShop_PriceInput.text ?? "")]
fShop_UserDefault.set(foodArray, forKey: "FoodArraySave")
let getFoodArray = fShop_UserDefault.object(forKey: "FoodArraySave")
print(getFoodArray ?? "No Array")
这项工作很好,但一次只能保存一个数组。例如,我创建的新数组标题将是 TestOne。如果我添加新标题将是 TestTwo,数组擦除 TestOne。我该如何解决?
正如马特指出的那样,您的数据属于字典类型,又名 [String: Any]。每当您将它保存到 UserDefaults 时,它都会被覆盖,因为您正在写入相同的密钥。如果要向同一个键添加更多数据,则必须将字典转换为字典数组:[[String: Any]]。然后您可以通过枚举访问单个词典,或访问您感兴趣的特定索引。
另一种方法是将每条数据保存在不同的键中,如"FoodArraySave1"、"FoodArraySave2"、"FoodArraySave3"。不过,这可能涉及更多且效率较低。
这可能是您想要做的:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var myFoodData: [[String: Any]] = []
let foodArray: [String: Any] = ["Title": "Eggs", "QTY": 18, "Price": 5.50]
let foodArray2: [String: Any] = ["Title": "Bacon", "QTY": 12, "Price": 12.50]
myFoodData.append(foodArray)
UserDefaults.standard.set(myFoodData, forKey: "FoodArraySave")
var getFoodData = UserDefaults.standard.object(forKey: "FoodArraySave") as! [[String: Any]]
print(getFoodData[0])
myFoodData.append((foodArray2))
UserDefaults.standard.set(myFoodData, forKey: "FoodArraySave")
getFoodData = UserDefaults.standard.object(forKey: "FoodArraySave") as! [[String: Any]]
print(getFoodData[1])
}
我尝试添加多个数组,但它删除了旧数组并创建了新数组。如何向 UserDefaults 添加更多/插入另一个数组?这是我的代码:
let foodArray = ["Title": String(fShop_TitleInput.text ?? ""), "QTY": String(fShop_QTYInput.text ?? ""), "Price": String(fShop_PriceInput.text ?? "")]
fShop_UserDefault.set(foodArray, forKey: "FoodArraySave")
let getFoodArray = fShop_UserDefault.object(forKey: "FoodArraySave")
print(getFoodArray ?? "No Array")
这项工作很好,但一次只能保存一个数组。例如,我创建的新数组标题将是 TestOne。如果我添加新标题将是 TestTwo,数组擦除 TestOne。我该如何解决?
正如马特指出的那样,您的数据属于字典类型,又名 [String: Any]。每当您将它保存到 UserDefaults 时,它都会被覆盖,因为您正在写入相同的密钥。如果要向同一个键添加更多数据,则必须将字典转换为字典数组:[[String: Any]]。然后您可以通过枚举访问单个词典,或访问您感兴趣的特定索引。
另一种方法是将每条数据保存在不同的键中,如"FoodArraySave1"、"FoodArraySave2"、"FoodArraySave3"。不过,这可能涉及更多且效率较低。
这可能是您想要做的:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var myFoodData: [[String: Any]] = []
let foodArray: [String: Any] = ["Title": "Eggs", "QTY": 18, "Price": 5.50]
let foodArray2: [String: Any] = ["Title": "Bacon", "QTY": 12, "Price": 12.50]
myFoodData.append(foodArray)
UserDefaults.standard.set(myFoodData, forKey: "FoodArraySave")
var getFoodData = UserDefaults.standard.object(forKey: "FoodArraySave") as! [[String: Any]]
print(getFoodData[0])
myFoodData.append((foodArray2))
UserDefaults.standard.set(myFoodData, forKey: "FoodArraySave")
getFoodData = UserDefaults.standard.object(forKey: "FoodArraySave") as! [[String: Any]]
print(getFoodData[1])
}