Модель общих данных в Swift - PullRequest
0 голосов
/ 03 мая 2020

Может ли ObservableObject использоваться в Swift? Я вижу только учебники для него в SwiftUI. Я хотел бы иметь возможность загружать объект в память из вызова API. Затем используйте VC для управления различными его частями, и все последующие VC отвечают на него.

1 Ответ

0 голосов
/ 03 мая 2020

Да, вы можете использовать ObservableObject, даже если вы не используете SwiftUI. Имейте в виду, что использование этого требует минимум iOS 13.

Но если вы не собираетесь использовать ObservableObject в контексте SwiftUI, убедитесь, что вы понимаете, как это работает. ObservableObject отправляет обновления до того, как будет установлено свойство, содержащее обновленное значение. Это связано с тем, что объект публикует с использованием издателя objectWillChange. Я указываю на это, потому что если вы используете sink на опубликованном значении в качестве механизма уведомления ваших VC о том, что новое значение доступно, и они go для получения значения путем прямой ссылки на опубликованное свойство, они все равно получат старое значение, и вы не увидите, что ваши экраны обновляются новыми данными.

При использовании ObservableObject в SwiftUI вам, как правило, не нужно беспокоиться об издателе objectWillChange, поскольку представления SwiftUI автоматически обновляются всякий раз, когда издатель стреляет. Поскольку обычные контроллеры представления по умолчанию не знают, как обновляться при запуске этих издателей, важно понимать, как реализовать свои обновления при использовании ObservableObject в качестве модели данных.

...