【问题标题】:Variable 'varname' used before being initialized in SwiftUI [duplicate]在 SwiftUI 中初始化之前使用的变量“varname”[重复]
【发布时间】:2021-09-13 22:22:41
【问题描述】:

Xcode 游乐场中的以下代码在主题中产生错误:

import SwiftUI

struct Test2 {
    var i: Int64
    var j: UUID
}

struct Test {
    @State private var t: Test2
    
    init(_ test: Test2) {
        t = test // Variable 'self.t' used before being initialized
    }
}

显然,我没有使用t,我正在为它分配一个值。

如果我从Test2 struct 中删除var j: UUID,错误就会消失。

在我的实际代码中,Test 结构是一个视图,但这不是生成错误所必需的。

【问题讨论】:

  • 初始化器中的 Test2 来自哪里?
  • @matt 来自测试结构的消费者:let myTest = Test(Test2(i: 0, j: UUID())
  • 但是你需要证明这一点。
  • @matt 我看不出它的相关性。调用者无关紧要。如果您将代码输入到 Playground 中,您会收到错误消息。
  • 如果没有 test: 参数的值,我一开始就不会期望编译。您至少需要展示有机会编译的代码。

标签: swift swiftui


【解决方案1】:

这应该可行:

init(_ test: Test2) {
    _t = State(initialValue: test) // Variable 'self.t' used before being initialized
}

@State 是一个属性包装器,因此您需要为底层属性赋值,因此 _

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    相关资源
    最近更新 更多