Я создал экземпляр UserData, чтобы другие классы могли наблюдать за этим экземпляром и отображать необходимую информацию, используя имя пользователя. Я пытаюсь сделать здесь следующее: когда пользователь входит в систему, различные классы с сохраненными свойствами, связанными с пользователем, будут время от времени обновляться (то есть путем вызова api) в зависимости от активности пользователя в приложении. Однако он показывает ошибку «Невозможно использовать член экземпляра userData» в инициализаторе свойства; Инициализаторы свойств запускаются до того, как «self» станет доступным ». Есть идеи, как это решить? Я не уверен, как передавать данные из одного 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 = ""
}