Сохранить массив умножения Swift - PullRequest
0 голосов
/ 30 января 2020

Я пытался добавить более одного массива, но он удаляет старый и создает новый. Как я могу добавить больше / вставить другой массив в 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. Как я могу решить это?

1 Ответ

1 голос
/ 30 января 2020

Как указывает Мэтт, ваши данные имеют тип 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])
    }
...