目前我正在使用addObserver方法在ObservableObject中接收我的愿望通知,另一方面我们可以在视图中使用publisher方法来接收愿望通知,我喜欢在ObservableObject中使用publisher方法而不是addObserver方法,我怎么能这样做呢?如何从类中的publisher接收/通知已发布的值?
import SwiftUI
struct ContentView: View {
@StateObject var model: Model = Model()
var body: some View {
两个ViewModels,一个是包含skills的roles存储 final class RolesStore: ObservableObject {
@Published var roles: [Role] = []
..... 角色模型是: struct Role: Codable, Identifiable {
let id: String
var name: String
var skills: [Skill]
} 另一个ViewModel是skills存储 final class SkillStore: ObservableObject {
@P
我有一个身份验证存储(一个ObservableObject),它存储用户是否已经通过应用程序的身份验证。我在用户登录时管理身份验证存储,本质上是将身份验证状态从notAuthenticated更改为authenticated。我在ViewModel的另一个ObservableObject中使用了相同的状态变量,它引用Auth store singleton对象。我认为有一种更简单的方法可以做到这一点,而不是沉没变量并在ViewModel上更新它(比如直接在ViewModel中嵌入Auth变量)。 这是auth store模型的简化代码 class Auth: ObservableObject
当我在OSX10.15.6和XCode版本11.6上尝试解决方案(请查看Passing data from simple NSView to SwiftUI View)时,我从系统收到以下错误信息,你知道吗?致命错误:找不到KeyboardInput类型的ObservableObject。此视图的祖先可能缺少KeyboardInput的View.environmentObject(:)。示例: file SwiftUI,第0 2020-08-07行11:05:36.189871+0200 ickit8642:182114致命错误:找不到KeyboardInput类型的ObservableOb
这是一个稍微抽象一些的版本。在应用程序中,这些嵌套的可观察对象确实是在视图中使用的(所以我宁愿使用可观察的对象,而不是直接发布服务器)。但是,我希望能够简单地订阅视图模型来测试它们。协议在那里,所以我可以模拟嵌套在测试中。
这是基本设置:
protocol NestedProtocol: AnyObject {
var string: String { get set }
}
class Nested: ObservableObject, NestedProtocol {
@Published var string = ""
}
class Parent: Observ
我现在正在学习SwiftUI,遇到了这个问题,我似乎无法修复。可能有一个非常简单的解决方案。实际上,我有一个视图模型,其中包含NSManagedObjects (房间)的列表:
class RoomViewModel: ObservableObject, ViewModelProtocol {
enum ViewState {
case Loading
case Normal
case NoData
}
@Published var viewState: ViewState = .Loading
我需要创建符合ObservableObject协议的类数组属性。因为我将与筛选器、排序等一起使用它--从表中选择要在列表视图中显示的记录。
class SQS_Record: NSObject, ObservableObject {
@Published final var __idx: Int = -1
}
class Project: SQS_Record {
@objc dynamic var name: String = "" { willSet { objectWillChange.send() } }
}
class SQS_T
我有一个包含多个已发布变量的ObservableObject来处理我的应用程序状态。每当其中一个已发布的变量发生变化时,我都想在我的ObservableObject中调用一个函数。最好的方法是什么?
class AppModelController: ObservableObject {
@Published var a: String = "R"
@Published var b: CGFloat = 0.0
@Published var c: CGFloat = 0.9
// Call this function whenever
我的第一个视图可以从API请求中获取所有数据,然后打开第二个视图更改API请求数据,就会崩溃。
下面是错误
Fatal error: No ObservableObject of type NetworkManager found.
A View.environmentObject(_:) for NetworkManager may be missing as an ancestor of this view.: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/Monoceros_Sim/Monoceros-39.3/Core/Env
我希望使用ObservableObject动态地在子视图之间切换。注意,在下面的代码中,行AnotherView().environmentObject(currentState)可以工作,但是行dynamicallyAddedSecondView与No ObservableObject of type CurrentState found. A View.environmentObject(_:) for CurrentState may be missing as an ancestor of this view.一起失败了,是否有一种方法可以将动态添加的视图视为ContentView环境
是否可以在ObservableObject中使用@EnvironmentObject对象?
它给了我一个错误:
Fatal error: No ObservableObject of type EntryViewModel found. A View.environmentObject(_:) for EntryViewModel may be missing as an ancestor of this view.: file SwiftUI, line 0
我知道@EnvironmentObject很好,因为我在其他地方使用它。
若否,我如何取得资料?
class ResultsViewM
如何使视图中的绑定机制类似于在ObservableObject类中发布的、但在两个类之间绑定的机制?也就是说,从A类调用B类构造函数,从A类传递prop1,在B类中存在prop2,这些prop1和prop2应该相互镜像。
附加代码不起作用,只是在视觉上展示我想要的.
PPS: prop1 in ClassA,prop2 in ClassB,必须按条件发布。它自己的意见也是订阅的。
PPPS:重要的是在ClassB中有任何绑定逻辑,以便于重用。
class ClassA: ObservableObject {
@Published var prop1: Bool = false //Wh
现在,我遇到了注册符合ObservableObject协议的问题。由于ObservableObject使用关联类型,所以在没有编译错误的情况下,我无法找到注册它的方法。
这是我的简单模型,叫做A
protocol A: ObservableObject {}
这是我的简单课,叫B
final class B: A {}
这是我的大会
final class ViewStoreAssembly: Assembly{
func assemble(container: Container) {
container.register(A.self) { _ in
我有一个名为line的结构,它包含一个名为isDone的bool。
struct Line : Hashable {
var isDone : Bool = false
var text : String
}
我的视图模型包含了其中的一个数组,一旦输入一行,isDone就被设置为true。
class ViewModel: ObservableObject {
@Published var lines : [Line] = []
@Published var currentRowIndex : Int = 0
func EnterWord() {
lin
我有一个采用ObservableObject协议的Activity类,它有一个存储也采用ObservableObject的Activity对象的items数组属性。
class Activity: ObservableObject, Codable, Identifiable {
let id = UUID()
@Published var title: String
@Published var description: String
@Published var numberOfTimesCompleted: Int = 0
func encode
我有一个ObservableObject,它存储了用户想要的当前国家的信息,我想让它在所有视图和类之间共享。我在场景委托中正确地声明了它,所以这是没有问题的。 import Foundation
class GlobalData: ObservableObject {
@Published var whichCountry: String = "italy"
} 这是我调用环境对象来获取whichCountry的主要视图。当用户单击该按钮时,它将打开ListOfCountriesView()并传递该EnvironemtnObject以更新用户想要的新国家/地区。
我想访问类的一个实例。
class MyModel: ObservableObject {
@Published var s: String = "test"
}
通过环境。我在现场代表中实例化了它
var m = MyModel()
然后我试着把它放到环境中
let contentView = ContentView().environment(\.managedObjectContext, context)
_ = contentView.environmentObject(m)
在内容视图中,我引用它就像
@EnvironmentObject var mod: M
//环境对象类
class AppData: ObservableObject {
@Published var studs : [StudentModel]
}
var body: some View {
VStack{
List(appData.studs,id:\.rollNo){ s in //causing error
Text("\(s.rollNo)")
NavigationLink(&
我在我的ObservableObject DateView中有这样的声明
import SwiftUI
class SelectedDate: ObservableObject {
@Published var selectedMonth: Date = Date()
var startDateOfMonth: Date {
let components = Calendar.current.dateComponents([.year, .month], from: self.selectedMonth)