StateObject 作为 init() 中另一个对象的参数

2024-05-06

我试图将 StateObject 用户传递给authenticationHelper,但我不能,因为 IDE 说“在初始化所有存储的属性之前使用 self”,即使它是在结构体的开头初始化的。我考虑过将 user 的初始化移至 init() 但同样,我不能,因为它是一个仅获取的属性,并且必须立即初始化。有解决办法吗?

@main
struct Test: App {
    @StateObject var user: User = User()
    var authenticationHelper: AuthenticationHelper

    init(){
        self.authenticationHelper = AuthenticationHelper(user: user)
    }

    var body: some Scene {
        WindowGroup {
            LoginView(user: user)
        }
    } 
}

使用计算属性

struct Test: App {
    
    @StateObject var user: User = User()
    var authenticationHelper: AuthenticationHelper {
        return AuthenticationHelper(user: user)
    }
    
    init() {
    }
}

你也可以这样使用

struct Test: App {
    
    @StateObject var user: User
    var authenticationHelper: AuthenticationHelper
 
    init() {
        let user = User()
        self._user = StateObject(wrappedValue: user)
        self.authenticationHelper = AuthenticationHelper(user: user)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StateObject 作为 init() 中另一个对象的参数 的相关文章

随机推荐

  • 尝试从 npm 安装 Angular 2 Material - 源文本中无法识别的标记

    我从 PowerShell 尝试以下命令 以管理员身份 npm install angular2 material 并得到错误 Unrecognized token in source text At line 1 char 13 npm
  • 是否可以更改 Android L TimePickerDialog 的样式?

    我正在 Android L 模拟器上测试我的应用程序 我注意到 TimePickerDialog 已显着更改为 这与我的应用程序的主题不符 我想知道在 Android L 上运行时是否可以获得旧的 TimePickerDialog 样式 A
  • jekyll 变量,if 函数

    为什么这样的东西不起作用 我尝试过滤今年的所有帖子 div class tiles for post in site categories articles capture pubyear post date date Y endcaptu
  • 通过访问硬盘序列号来保护软件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想获得VB NET或VB代码来在启
  • 静态方法而不是原型方法Javascript

    当在类中调用实例函数时 对象的每个实例都会获得自己的函数副本 但在原型方法和静态方法中不会创建副本 它们属于类 所以如果它们都没有创建其函数的副本 那么为什么如果我们不想复制 可以简单地使用原型方法 那么我们是否有静态函数 我有点困惑 如果
  • 使用 SimpleXML 从 XML 获取多个项目

    我正在尝试使用下面的代码循环 XML 中的多个项目 xml get data the url data simplexml load string xml foreach data gt item AS item foreach item
  • 在 iOS 8 上本地化用户

    你好 我开始将我的应用程序移植到 iOS 8 但很快我就遇到了 CLLocationManager 的问题 基本上 该应用程序不再将地图集中在用户位置上 而是提出错误 尝试启动 MapKit 位置更新而不提示位置授权 必须首先调用 CLLo
  • Jasmine的spyOn()是否允许执行spies on函数?

    茉莉花有吗spyOn 方法允许执行监视函数 或者确实是这样 当 即将 调用监视方法时拦截调用 并返回true PS 谁能给我解释一下spyOn 的内部运作 Spy 间谍可以伪装成一个函数或一个对象 您可以在编写单元测试代码时使用它们来检查函
  • 'NSDate' 没有可见的 @interface 声明选择器 'initWithString:' [重复]

    这个问题在这里已经有答案了 可能的重复 NSDate initWithString https stackoverflow com questions 7770257 nsdate initwithstring 我写了下面一行代码 NSDa
  • 翻转旋转和图像

    我正在用 Java 编写一个平台游戏 并且正在手动编码玩家动画 我分别为每个肢体设置动画 改变位置和旋转 当玩家面向右时 这工作得很好 但是当玩家面向左时 我不知道如何处理旋转 以使它们在玩家向左转时看起来相同 每个身体部位的位置都是相对于
  • 有没有办法使用 Mayavi 填充陀螺仪表面的一侧?

    我正在使用 Mayavi 绘制陀螺仪的等值面 我的问题是我需要通过填充两个生成区域的一侧来获得更坚固的结构 在下面的图片中 您可以看到我生成的等值面的外观以及填充一侧后的外观 我生成的等值面 它应该是什么样子 等值面可以通过以下方程生成 U
  • Swift 中的 NSCollectionView 选择处理

    使用 Swift 学习 我一整天都在做这件事 但进展甚微 需要知道何时选择 NSCollectionView 中的项目 最终目标是让项目突出显示 并能够使用删除键将其从集合中删除 我的 NSCollectionView 绑定到 ArrayC
  • 在 eclipse indigo 中找不到 Window builder pro

    我读到 Eclipse Indigo 安装了 Window Builder Pro 插件 但我不知道它在哪里 文件 新建 项目没有给我选择 Window Builder Pro 的选项 如何找到它 您需要将此更新站点添加到 Eclipse
  • Font Awesome 4.0.0 缺少图标

    是我一个人的问题 还是 FontAwesome 3 x x 中实际上有 FontAwesome 4 0 0 中缺少的图标 如果是这样 这肯定会让 FontAwesome 对我来说不再那么棒 例如 我似乎找不到相当于icon remove 没
  • java格式化表格输出

    所以我正在尝试格式化我的输出 System out println Menu nItem tItem t tPrice tQuantity for int i 0 i
  • jQuery 单击事件更改 php 会话变量

    对此最好的方法是什么 因为 正如我发现的 只有在尝试过之后才完全有意义 p 你不能在 javascript 条件下设置 PHP 变量 杜尔赫 我能想到的唯一解决方案是对一个处理会话变量的小型 PHP 文件进行 AJAX 调用 elm cli
  • 给定字符串的所有可能排列?

    我该如何在 Ruby 中做到这一点 p abc all possible permutations 将返回 abc acb bca bac cba cab Edit 感谢雅库布 汉普尔 class String def all possib
  • 仅以 int 形式显示和保存小时数

    如何仅显示小时并使用 int 变量 我的意思是打印时间 例如 20 30 44 PM 我只想存储小时 即 int 变量中的 20 小时 怎么做 有谁知道的话可以告诉我密码吗 谢谢 尝试使用日历get http docs oracle com
  • 无法让 Rails Server 与 MySQL 一起使用

    我正在尝试让我的 Rails 应用程序与 MySQL 一起使用 而不是默认的 SQLite 我创建了一个新项目 强制使用 MySQL 它似乎工作正常 它在 Gem 文件中添加了 gem 条目 如下所示 source https rubyge
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样