【发布时间】: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中。您可以将其放入onAppear或task。看起来你body可能根本不在View之内。您可能想查看一些 SwiftUI 教程(Apple 的或 Hacking with Swift 的) -
我实际上想有选择地将文本设置为文本控件...我只是没有提供所有代码,只是提供必要的代码。因此,如果索引超出数组范围,则将文本设置为“无”,如果在范围内,则使用数组中的对象作为字符串。
-
SwiftUI 教程将是一个不错的选择