Как хранить массивы в @AppStorage swift?

В Swift 5.3 и новее, вы можете использовать аннотацию @AppStorage для хранения массивов в UserDefaults. @AppStorage предоставляет простой способ сохранить и восстановить значения свойства в UserDefaults, который является постоянным хранилищем данных на устройстве.

Для начала, вам нужно импортировать Foundation и SwiftUI в вашем файле Swift:

import Foundation
import SwiftUI

Затем вы можете использовать аннотацию @AppStorage в вашей структуре или классе SwiftUI, чтобы хранить массивы. Например, давайте предположим, что у нас есть структура, которая представляет приложение для заметок:

struct NoteApp: App {
    @AppStorage("notes") var notes: [String] = []
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Здесь мы использовали аннотацию @AppStorage и привязали свойство "notes" к ключу "notes" в UserDefaults. Тип значения в этом примере - массив строк ([String]).

Далее мы можем использовать это свойство в любых представлениях SwiftUI в приложении. Например, давайте создадим представление ContentView:

struct ContentView: View {
    @AppStorage("notes") var notes: [String] = []

    var body: some View {
        VStack {
            Button(action: {
                // Добавление новой заметки
                self.notes.append("Новая заметка")
            }) {
                Text("Добавить заметку")
            }
            
            List {
                ForEach(notes, id: .self) { note in
                    Text(note)
                }
            }
        }
    }
}

В этом примере мы использовали @AppStorage("notes") для привязки свойства notes к массиву заметок, сохраненных в UserDefaults. Мы также использовали @ForEach, чтобы отобразить каждую заметку из массива в списке представлений.

На практике каждый раз, когда пользователь добавляет новую заметку, она будет сохраняться в UserDefaults, и при следующем запуске приложения массив заметок будет восстанавливаться из UserDefaults.

Это всего лишь пример использования @AppStorage для хранения массивов в UserDefaults. Он предоставляет простой способ управления постоянными данными в вашем приложении, но помните, что UserDefaults имеет ограничение на размер хранимых данных. Если ваши массивы становятся слишком большими, вам может потребоваться рассмотреть альтернативные способы хранения данных, такие как CoreData или Realm.