Приложение Swift не может найти ObservableObject после патча XCode 11.4.1 - PullRequest
1 голос
/ 30 апреля 2020

Я действительно даже не совсем уверен, как сформулировать этот пост или какой код предоставить, чтобы помочь другим определить причину проблемы. Я просто обновил свой XCode до последней версии и снова собрал свое приложение, не внеся никаких изменений по сравнению с моей предыдущей сборкой, сделанной в последней версии. Внезапно, с этой последней сборкой, я продолжаю получать фатальную ошибку при попытке перейти к части моего приложения.

У меня есть EnvironmentObject с именем profile, который генерируется, когда пользователь входит в приложение. Как и следовало ожидать, я часто использую это для получения пользовательских данных. Точное представление, являющееся проблематичным c, - это представление моего профиля, которое по существу полностью основано на данных профиля. Я знаю, что EnvironmentObject определен и успешно создан, потому что после входа в систему вид приземления использует этот объект на кусочки. Однако, чтобы попасть в профиль, вы должны перейти к указанному c разделу пользовательского интерфейса, который представляет собой NavigationLink в профиле.

Когда я нажимаю эту навигационную ссылку в последней версии XCode, она выдает фатальную ошибку, сообщающую, что наблюдаемый объект, из которого получен объект среды, не существует, что, как очевидно из того факта, что загружается основной вид посадки, является ложным. Чтобы указать c об ошибке, она выводит на консоль, что

Не обнаружен ObservableObject типа ProfileFetcher. View.environmentObject (_ :) для ProfileFetcher может отсутствовать как предок этого представления. File SwiftUI, строка 0

Теперь, конечно, эта ошибка неверна, потому что этот наблюдаемый объект выполняет большинство безусловно, существует, и используется в представлении перед ним.

Я даже пытался просто сделать представление не зависящим от объекта и просто попытаться передать данные объекта профиля в представление с помощью переменной, чтобы нет Удачи.

Как я уже сказал, эта сборка со всем этим кодом точно так же, как она прекрасно работала на последней версии XCode, и тот факт, что теперь мое приложение сломалось из-за какой-то ошибки, крайне раздражает и Я не знаю, что делать, чтобы это исправить, потому что объект среды привязан ко всем моим базовым представлениям, а не только к тем, которые являются предками представления профиля, поэтому я знаю, что это не так.

Я действительно не знаю, что делать, кроме как ждать следующего обновления и надеюсь, что это исправит это, потому что этот объект используется буквально в каждом представлении, которое у меня есть.

1 Ответ

1 голос
/ 30 апреля 2020

Мне нравится публиковать ответ, но я разобрался с ним, и, возможно, я виноват в том, что не читал примечания к патчу, потому что они что-то изменили в отношении использования объектов окружающей среды в подпредставлениях. Теперь, когда вы вызываете навигационную ссылку на другое представление, которое использует объект среды, вы должны передать его вместе с представлением с помощью NavigationLink (назначение: ProfileView (). EnvironmentObject (profile)). Если вы этого не сделаете, вы получите ту же ошибку, которую я сделал. Надеюсь, это помогло кому-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...