错误:类型“()”不能符合“视图”;只有结构/枚举/类类型可以符合协议

时间:2020-12-31 10:57:49

标签: arrays swift append locale

我正在尝试将值定义到 Struct 中的数组,但是出现以下错误:

<块引用>

类型'()'不能符合'View';只有 struct/enum/class 类型才能符合协议

我已经为我的函数定义了一个结构:

struct Functions {
    //CURRENCY FORMATTING

我正在使用以下代码创建一个 localeIdentifiers 数组和相应的描述:

let localeSheet: [(id: String, name: String)] = {
    Locale.availableIdentifiers.map {
        (id: $0, name: (NSLocale.current as NSLocale).displayName(forKey: .identifier, value: $0) ?? "-")
    }.sorted { $0.name < $1.name }
}()

我已经定义了一个数组:

var localeIdentifiersX = [String]()

现在尝试将值附加到该数组:

func currencyFormatters() {
    ForEach(0 ..< localeSheet.count) {
            localeIdentifiersX.append(localeSheet[$0].id)
            //print(localeSheet[$0].id)
    }
}

这是显示错误的地方。

谢谢

2 个答案:

答案 0 :(得分:1)

ForEach(大写为 F)是一个视图构建器,它的主体必须返回一个 View

如果你坚持使用 foreach 你应该这样做:

func currencyFormatters() {
    (0 ..< localeSheet.count).forEach {
        localeIdentifiersX.append(localeSheet[$0].id)
        //print(localeSheet[$0].id)
    }
}

此外,您可以使用 map 函数一次性将数组的所有元素转换为另一种格式,例如:

let localeIdentifiersX = localeSheet.map { $0.id }

然后使用结果来构建您的 SwiftUI 视图。

答案 1 :(得分:-1)

再次感谢。

我按照建议进行了映射: 这是一个简单的单行 localeIdentifiersX = localeSheet.map(.id)

还使用了标准的 for 循环来遍历数组以进行进一步处理。