Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 保存乘法数组_Arrays_Swift_Save_Nsuserdefaults - Fatal编程技术网

Arrays 保存乘法数组

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

我试图添加多个数组,但它会删除旧数组并创建新数组。如何向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。我如何解决它呢?

正如马特指出的,您的数据属于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
。在你的问题中,你提到了“多个数组”、“多个数组”和“另一个数组”。但是你知道吗?它不是数组。这是一本字典。我怀疑您在这里想要的确实是一个数组—一个字典数组,或者更好,一个带有
标题
数量
价格
属性的自定义结构数组。但你没有。我挣扎了将近三天,直到最后得到你的回答。它终于起作用了。谢谢,谢谢。