【问题标题】:Error while compiling for SwiftUI (Type check)为 SwiftUI 编译时出错(类型检查)
【发布时间】:2023-01-13 02:36:45
【问题描述】:

在我看来,编译此 if/else 语句时出现错误。看起来它的类型足够好,但会产生错误。 modes 是一个对象数组。索引是来自枚举值的 Int

public extension CaseIterable where Self: Equatable {
    func elementIndex() -> Self.AllCases.Index {
        return Self.allCases.firstIndex(of: self)!
    }
}
...
var body: some View
    {
        VStack
        {
            //compiler barfs below:
            let c: Int = modes.count - 1 as! Int
            let index: Int = current_mode.currentMode.elementIndex() as! Int
            if (index > c) {
                print("nope")
            } else {
                print("ok")
            }

我该如何编写它才能编译?

我认为它的类型足以编译。

【问题讨论】:

  • 像这样的过程代码不会出现在Viewbody中。您可以将其放入onAppeartask。看起来你 body 可能根本不在 View 之内。您可能想查看一些 SwiftUI 教程(Apple 的或 Hacking with Swift 的)
  • 我实际上想有选择地将文本设置为文本控件...我只是没有提供所有代码,只是提供必要的代码。因此,如果索引超出数组范围,则将文本设置为“无”,如果在范围内,则使用数组中的对象作为字符串。
  • SwiftUI 教程将是一个不错的选择

标签: swiftui watchos


【解决方案1】:

我重新考虑了如何解决这个问题。我添加了一个 @State 文本变量并在我的 Text 对象中使用它。稍后在 .onAppear 中检查,如果可能的话,我更新状态变量并实现它(刷新 UI)。

我很困惑,因为你可以做 if/else 检查来确定是否将某些视图包含到层次结构中——只是不做我想做的事情。我解决了我的问题。感谢所有花时间阅读本文的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多