问题标签 [observedobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
53 浏览

swift - 将变量从 App 文件 SwiftUI 2 传递到 ContentView?

所以现在我的 ContentView 看起来像这样:

我的应用程序文件如下所示:

我想我必须为 ContentView 重新定义我的 init() 但老实说,我非常不确定如何正确地构造它,以便正确保留所有依赖项。任何帮助将非常感激!

0 投票
0 回答
158 浏览

core-data - SwiftUI:使用 Core Data 关系数组的更改更新 View

我有一个 SwiftUI 视图,其中传入了核心数据 NSManagedObject(没有 @FetchRequest),并且子视图需要显示来自第一个实体的一对多关系。在这种情况下,Person传入了 a,我想显示Tags与该 Person 的关联。

联系人标签列表

使用时@State,它可以很好地显示标签列表,甚至对个人Tags的更改也会自动反映在视图中。但是对“关系”的任何更改,无论是添加还是删除标签Person,都不会导致视图更新。

我尝试使用@ObservedObject而不是@Statefor var personTags,但这会在编译时出现错误:

属性类型“[Tag]”与其包装器类型“ObservedObject”的“wrappedValue”属性不匹配

我是 SwiftUI 的新手,所以我不确定使用 @ObservedObject 有什么问题。如果我不能使用它,处理这种情况以自动更新关系的最佳方法是什么?

0 投票
1 回答
82 浏览

swiftui - 线程 1:致命错误:没有 ObservableObject 类型

视频链接Youtube

控制台错误

用户默认配置

CustomTabView 首先打开

自定义选项卡视图

我在 MainView 中单击 MovieCell 并将其定向到 DetailView。

主视图

详细视图

当我单击此处的按钮时,userDefaultsConfig 中的 setUserDefaults 函数正在运行。

在 DetailView 页面的 UserDefaults 中保存的电影将显示在收藏夹页面上,但是当我打开收藏夹页面时,我收到错误消息。

收藏夹查看

0 投票
1 回答
470 浏览

swift - ObservedObject 更改时的通知

我有一个由几个 SwiftUI 组件组成的图形用户界面(我们称它们为子视图)。这些子视图在 ObservableObject / ObservedObject 的帮助下相互通信。当对一个视图进行更改时,会自动通知另一个视图并自行更新。

但是,其中一个子视图不是 SwiftUI 视图,而是 SpriteKit SKScene。在这里,我也想对观察值的变化做出反应。但我没有自动更新的观点。我想根据观察到的值对精灵进行调整。

如何通知我价值的变化?一旦 ObservedObject 的值发生变化,我可以调用方法吗?

0 投票
1 回答
269 浏览

core-data - SwiftUI 中的 Core Data 观察对象

我创建了一个保存在核心数据中的客户端列表。我通过 AddView 添加了一些属性,现在我尝试使用不同的视图添加新属性。为了做到这一点,我知道我需要使用observedObject 属性包装器,这样它就不会创建新客户端而是更新现有客户端。这是代码:

我收到两个错误消息:无法将“Binding<String?>”类型的值转换为预期的参数类型“Binding”,以及无法将“String”类型的值转换为预期的参数类型“Binding<String?>”

这可能是一个简单的解决方法,但由于我仍在学习,我无法理解它。谢谢

0 投票
0 回答
101 浏览

core-data - 缺少参数核心数据swiftUI的参数

我创建了一个保存在核心数据中的客户端列表。我通过 AddView 添加了一些属性,现在我尝试使用不同的视图添加新属性。为了做到这一点,我知道我需要使用observedObject 属性包装器,这样它就不会创建新客户端而是更新现有客户端。这是代码:

}

我从不同的视图(StudentView)推送主题视图,但是由于我添加了observedObject,它在StudentView中引发了这个错误: 错误

我知道这很容易解决,但我在互联网上找不到太多信息。谢谢

0 投票
0 回答
85 浏览

core-data - 使用观察对象更新核心数据实体

我创建了一个保存在核心数据中的客户端列表。我通过 AddView 添加了一些属性,现在我尝试使用不同的视图添加新属性。为了做到这一点,我知道我需要使用observedObject 属性包装器,这样它就不会创建新客户端而是更新现有客户端。这是代码:

这是应该显示新属性的视图:

问题是,如果我在文本编辑器中输入一些文本而不保存它,那么它会在另一个视图中正确显示。但是,当我保存它时,它不会显示在其他视图中。我的保存代码有什么问题吗?

0 投票
1 回答
44 浏览

core-data - 从 Core Data 非标量属性更新 SwiftUI 视图

我有一个核心数据 NSManagedObject 实体Person,它具有一个作为 NSNumber 生成的 Bool 属性。(未使用“使用标量类型”复选框,因此 Bool 属性变为 NSNumber)我正在尝试观察此属性employed来控制 UI。

@ObservedObject var person: Person

我在“1”处收到警告说:Cannot convert value of type 'Binding<NSNumber?>' to expected argument type 'Binding<Bool>' 如何在employed不将属性更改为标量的情况下将属性用作布尔值?

注意:$person.employed.boolValue似乎行不通,我还必须考虑可选部分。

0 投票
0 回答
103 浏览

swiftui - NavigationLinks 目标视图中的@StateObject 工作起来很奇怪

我试图弄清楚@StateObject 在 swiftUI 中是如何工作的。根据文档文档(https://developer.apple.com/documentation/swiftui/stateobject):

SwiftUI 只为声明对象的结构的每个实例创建一次对象的新实例

所以我写了简单的例子:

但是,如果我导航到计数器,多次按下按钮并再次来回导航,我的值将被删除,并且控制台显示,@StataObject 的初始化程序被调用了两次。所以每次我导航到它时似乎都会重新创建 Counter() 。

我的第一个问题是如何防止 NavigationView 这样做?如何告诉它,我的计数器是相同的,不应该从头开始重新创建?

当我将@StateObject 更改为@ObservedObject 时,会出现第二个问题。在这种情况下,应用程序按我的计划工作:计数器存储计数值。但是,如果我点击屏幕底部的按钮并将新元素添加到列表中,所有列表实体都会重新创建,并且控制台会显示多个“init”日志。此时计数器也被丢弃。它打算如何工作?

0 投票
1 回答
107 浏览

swiftui - 将 `environmentObject` 数据传递给另一个类(单例)

我有一个observableObject包含一些数据的类。

可观察类

我创建并将其SceneDelegate作为environmentObject视图层次结构传递。

场景委托

问题是我有一个与服务器同步的单例类,我需要更新UserManager类中的数据。

单例类

但它根本不起作用。我无法发布单例类的更改。