ios - XCode 11.4.1 补丁后 Swift 应用程序无法找到 ObservableObject

标签 ios swift xcode

我什至不完全确定如何写这篇文章,或者提供什么代码来帮助其他人确定问题所在。我刚刚将我的 XCode 更新到了最新版本,并再次构建了我的应用程序,而没有对我在上一个版本上所做的先前构建进行任何更改。突然之间,在这个最新版本中,当我试图导航到我的应用程序的一部分时,我不断收到一个 fatal error 。

我有一个名为 profile 的 EnvironmentObject,它是在用户登录应用程序时生成的。正如人们所期望的那样,我经常使用它来检索用户数据。有问题的确切 View 是我的个人资料 View ,它基本上完全基于个人资料数据。我知道EnvironmentObject 定义并创建成功,因为登录后的登陆 View 利用这个对象进行点点滴滴。但是,要访问配置文件,您必须导航到 UI 的特定部分,这是到配置文件的 NavigationLink。

当我在最新版本的 XCode 中点击此导航链接时,它会抛出一个 fatal error ,告诉我环境对象所派生的可观察对象不存在,从主着陆 View 加载的事实可以明显看出,错误的。为了具体说明错误,它会打印到控制台

No ObservableObject of type ProfileFetcher found. A View.environmentObject(_:) for ProfileFetcher may be missing as an ancestor of this view.: file SwiftUI, line 0



当然,这个错误是不正确的,因为这个可观察对象确实存在,并且在它之前的 View 中使用。

我什至试图让 View 不依赖于对象,只是尝试通过使用变量将配置文件对象数据传递到 View 上,但无济于事。

就像我说的,这个构建与所有这些代码完全一样,它在 XCode 的最新版本上运行得非常好,而且现在我的应用程序由于一些错误而被破坏的事实非常令人气愤,我不知道该怎么做修复它,因为环境对象附加到我拥有的每个基本 View ,而不仅仅是配置文件 View 的祖先,所以我知道这不是真的。

除了等待下一次更新并希望它能解决这个问题之外,我真的不知道该怎么做,因为这个对象几乎用于我拥有的每个 View 中。

最佳答案

发布答案感觉很快,但我想通了,也许我没有阅读补丁说明是我的错,因为它们改变了关于在 subview 中使用环境对象的一些内容。现在,当您调用另一个使用环境对象的 View 的导航链接时,您必须使用 NavigationLink(destination: ProfileView().environmentObject(profile)) 将其与 View 一起传递。如果不这样做,您将收到与我相同的错误。希望这对某人有所帮助。

关于ios - XCode 11.4.1 补丁后 Swift 应用程序无法找到 ObservableObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531415/

相关文章:

ios - 代码中的自动布局约束与 XIB 中的大小冲突

ios - 返回一个空的 JSON 数组导致 Swift 中出现越界错误

ios - Popover View Controller 的角半径

ios - 如何知道使用 MapKit 的异步搜索何时完成

ios - 我正在尝试访问 ios 中的视频聊天,但出现以下错误 :"_OBJC_CLASS_$_OTPublisher",引用自“有人能帮帮我吗?

swift - 使用 Realm Swift 预加载数据库

ios - 如何以编程方式获取正确的 iOS 版本?

iphone - UITableView 中的 UITextField 中的 UIDatePicker 实时更新

objective-c - 自定义键盘崩溃共享库事件(内存泄漏?)

ios - 使用 UIPasteBoard 复制图像 (Swift)