struct ContentView: View {
@SceneStorage("selectedIndex") var selectedIndex: Int?
var body: some View {
List(0..<10, selection: $selectedIndex) { index in
Text("Cell \(index)")
.id(index)
}
}
}
Может быть, вы ищете AppStorage?
@jnpdx Большое спасибо!! Я пропустил документацию. Я мог бы использовать AppStorage
(UserDefaults
), но просто интересно, является ли обычной практикой хранить выбранный идентификатор ячейки в AppStore
(Userdefaults
)? Является ли AppStorage рекомендуемым подходом для выбора ячеек или любым другим подходом?
обычно я думаю, что вы бы использовали такие вещи для пользовательских предпочтений. Иногда в облегченных или игрушечных приложениях вы можете использовать это, и это нормально, но для чего-то более производственного или пользовательских данных я бы использовал настоящую базу данных (sql/CoreData) или записал что-то в файл.
https://developer.apple.com/documentation/swiftui/scenestore
Если сцена уничтожается явным образом (например, моментальный снимок переключателя уничтожается в iPadOS или закрывается окно в macOS), данные также уничтожаются.
Учитывая вышеизложенное, SceneStorage
не подходит для ваших требований к постоянным запускам.
Например, AppStorage может быть лучшим выбором.
Из документов: если сцена явно уничтожена (например, моментальный снимок переключателя уничтожен в iPadOS или окно закрыто в macOS), данные также будут уничтожены.