Быстрые наблюдения асинхронных... Заметка

Быстрые наблюдения асинхронных последовательностей для изменений состояния

Swift 6.2 представляет новый тип Observations для потоковой передачи изменений состояния из Observable типов. Это полезно для сохранения состояния приложения, такого как поисковый запрос сцены и путь навигации. Автор ранее управлял этим состоянием в Codable классе SceneModel, который мог быть закодирован в JSON для сохранения.Этот SceneModel затем сохранялся и восстанавливался с использованием @SceneStorage в корневом представлении. Однако сохранение состояния зависело от мониторинга scenePhase, что было ненадежно, поскольку сцены могли завершиться до перехода в фоновый режим. До Swift 6.2 ObservableObject с @Published свойствами позволял использовать buffer и values от Combine для создания AsyncSequence для сохранения изменений состояния.С iOS 26 и Swift 6.2 тип Observations предоставляет аналогичный AsyncSequence для Observable типов. Это позволяет наблюдать за вычисляемыми свойствами, такими как JSON-представление SceneModel. Тип Observations принимает замыкание, которое возвращает наблюдаемое значение.Изменения транзакционны, что означает, что несколько синхронных обновлений наблюдаемых свойств объединяются в одно значение последовательности. Отслеживание обновлений начинается с willSet наблюдаемых свойств и завершается в следующей точке приостановки. Это позволяет автоматически сохранять состояние модели сцены при каждом изменении, не полагаясь на scenePhase. AsyncSequence из Observations выпускает начальное значение наблюдаемого свойства при подписке.