问题描述
我正在尝试将值定义到 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)
}
}
谢谢
解决方法
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 视图。
,再次感谢。
我按照建议进行了映射: 这是一个简单的单行 localeIdentifiersX = localeSheet.map(.id)
还使用了标准的 for 循环来遍历数组以进行进一步处理。