@SceneStorage не работает на Mac

Обзор

  • Ниже указанный код не работает на macOS
  • Выбор не сохраняется при запуске

Мое наблюдение

  • Когда я запускаю Xcode и перестаю работать в Xcode, выбор сохраняется при следующем запуске.
  • Однако, если я запускаю Xcode, а затем выхожу (команда Q), выбор не сохраняется.
  • Выбор не сохраняется, когда приложение архивируется в отдельное приложение.

Вопросов

  1. Я что-то упускаю?
  2. Что делать, чтобы сохранить выбор?

Код

struct ContentView: View {
    
    @SceneStorage("selectedIndex") var selectedIndex: Int?
    
    var body: some View {
        List(0..<10, selection: $selectedIndex) { index in
            Text("Cell \(index)")
                .id(index)
        }
    }
}

Из документов: если сцена явно уничтожена (например, моментальный снимок переключателя уничтожен в iPadOS или окно закрыто в macOS), данные также будут уничтожены.

jnpdx 21.11.2022 01:12

Может быть, вы ищете AppStorage?

jnpdx 21.11.2022 01:12

@jnpdx Большое спасибо!! Я пропустил документацию. Я мог бы использовать AppStorage (UserDefaults), но просто интересно, является ли обычной практикой хранить выбранный идентификатор ячейки в AppStore(Userdefaults)? Является ли AppStorage рекомендуемым подходом для выбора ячеек или любым другим подходом?

user1046037 21.11.2022 01:48

обычно я думаю, что вы бы использовали такие вещи для пользовательских предпочтений. Иногда в облегченных или игрушечных приложениях вы можете использовать это, и это нормально, но для чего-то более производственного или пользовательских данных я бы использовал настоящую базу данных (sql/CoreData) или записал что-то в файл.

Andrew Carter 21.11.2022 05:10
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
4
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

https://developer.apple.com/documentation/swiftui/scenestore

Если сцена уничтожается явным образом (например, моментальный снимок переключателя уничтожается в iPadOS или закрывается окно в macOS), данные также уничтожаются.

Учитывая вышеизложенное, SceneStorage не подходит для ваших требований к постоянным запускам.

Например, AppStorage может быть лучшим выбором.

Другие вопросы по теме