set*_*eee 4 xcode swift swiftui
struct ProfileEditView: View {
@ObservedObject var viewModel: UsersViewModel
@StateObject var auth: Authenticator
@State var showingImageEditor: Bool = false
init(_ viewModel: UsersViewModel, _ auth: Authenticator) {
    
    self.viewModel = viewModel
    self.auth = auth
    
    UITableView.appearance().backgroundColor = UIColor.clear
    UITableViewCell.appearance().selectionStyle = .none
}
var body: some View { }}
我正在尝试手动初始化一个将 aStateObject作为参数的视图。我收到一个错误:Cannot assign to property: 'auth' is a get-only property。编写初始化程序的正确方法是什么?
如果没有您对Authenticatorand的定义,我无法完全重现您的代码UsersViewModel,但我可以编译它:
class UsersViewModel: ObservableObject {}
class Authenticator: ObservableObject {}
struct ProfileEditView: View {
    @ObservedObject var viewModel: UsersViewModel
    @StateObject var auth: Authenticator
    @State var showingImageEditor: Bool = false
    init(_ viewModel: ObservedObject<UsersViewModel>, _ auth: Authenticator) {
        _viewModel = viewModel
        _auth = StateObject(wrappedValue: auth)
        UITableView.appearance().backgroundColor = UIColor.clear
        UITableViewCell.appearance().selectionStyle = .none
    }
    var body: some View {
        Text("something")
    }
}
这些是关键的变化:
init(_ viewModel: ObservedObject<UsersViewModel>, _ auth: Authenticator) {
    _viewModel = viewModel
    _auth = StateObject(wrappedValue: auth)
如果你不明白我的变化,你应该谷歌
“快速属性包装器”
以更好地了解什么是属性包装器以及如何使用它们。
| 归档时间: | 
 | 
| 查看次数: | 696 次 | 
| 最近记录: |