Arrays 保存乘法数组
我试图添加多个数组,但它会删除旧数组并创建新数组。如何向UserDefaults添加更多/插入另一个数组?这是我的代码:Arrays 保存乘法数组,arrays,swift,save,nsuserdefaults,Arrays,Swift,Save,Nsuserdefaults,我试图添加多个数组,但它会删除旧数组并创建新数组。如何向UserDefaults添加更多/插入另一个数组?这是我的代码: let foodArray = ["Title": String(fShop_TitleInput.text ?? ""), "QTY": String(fShop_QTYInput.text ?? ""), "Price": String(fShop_PriceInput.text ?? "")] fShop_UserDefault.set(foodArra
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。我如何解决它呢?正如马特指出的,您的数据属于Dictionary类型,即[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])
}
嗯,这里的很多问题是,你使用单词数组把自己搞糊涂了。您可以调用变量
foodArray
。您可以将您的密钥称为“foodaraysave”。调用第二个变量getFoodArray
。在你的问题中,你提到了“多个数组”、“多个数组”和“另一个数组”。但是你知道吗?它不是数组。这是一本字典。我怀疑您在这里想要的确实是一个数组—一个字典数组,或者更好,一个带有标题
、数量
和价格
属性的自定义结构数组。但你没有。我挣扎了将近三天,直到最后得到你的回答。它终于起作用了。谢谢,谢谢。