ios - 如何将观察到的属性传递给其他类?

标签 ios swift class swiftui observable

我创建了UserData的实例,以便其他类可以观察该实例并使用用户名显示必要的信息。我在这里要做的是,当用户登录时,将根据应用程序中的用户 Activity 不时更新(即通过调用api)具有与用户相关的存储属性的不同类。
但是,它在属性初始化程序中显示错误“无法使用实例成员'userData'”;属性初始化程序在“自我”可用之前运行。任何想法如何解决这个问题?
我不确定如何将数据从单个ObservedObject传递到另一个。

struct passingData: View {
    
    @ObservedObject var userData = UserData()
    @ObservedObject var images = ImageURL(userData: userData)
    @ObservedObject var payment = Payment(userData: userData)
    
    
    var body: some View {
        
        VStack{
            TextField("Enter userName", text: $userData.userName)
            Text("url is \(images.imageURL)")
            Text("Payment detail: \(payment.paymentDate)")
        }
    }
}


class Payment: ObservableObject{
    @Published var paymentDate = ""
    @ObservedObject  var userData: UserData
    init(userData: UserData){
        self.userData = userData
        loadPaymentDate()
    }
    
    func loadPaymentDate(){
        self.paymentDate = "last payment date from \(userData.userName) is someDate "
    }

}


class ImageURL: ObservableObject{
    @Published var imageURL = ""
    @ObservedObject  var userData: UserData
    init(userData: UserData){
        self.userData = userData
        loadImageURL()
    }
    
    func loadImageURL(){
        self.imageURL = "123_\(userData.userName).com"
    }
}



class UserData: ObservableObject{
    @Published var userName = ""
    
}

最佳答案

这是可能的解决方案:

struct passingData: View {
    
    @ObservedObject var userData: UserData
    @ObservedObject var images: ImageURL
    @ObservedObject var payment: Payment

    init() {
       let data = UserData()
      
       self.userData = data
       self.images = ImageURL(userData: data)
       self.payment = Payment(userData: data)
    }
    // ... other code

关于ios - 如何将观察到的属性传递给其他类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62830709/

相关文章:

iphone - 由于 __psynch_mutexwait,UI 无响应

ios - 上传带有进度的异步图像

ios - Playground : Use of unresolved identifier 'NSColor'

ios - 如何在 Swift 中将 RealmOptional 转换为 Int 或 Float?

java - 如何从不同的类和包访问对象?

ios - 在安装新版本的应用程序时升级现有应用程序中的CoreData

iphone - 应用商店是否拒绝不支持多方向的IPAD应用

variables - Swift - 替换字符串中的字符

C++ 创建两个独立抽象类的派生类数组

单独文件中的 C++ 类无法编译。已经在 Class.obj 中定义了一个或多个多重定义的符号