如何为 Table 中的 Table 列提供默认值
How to give default value to TableColumn in Table
我有这个示例代码:
struct Item: Identifiable {
var id = UUID()
var name: String?
}
struct ItemTable: View {
let items: [Item]
var body: some View {
Table(items) {
TableColumn("Name", value: \.name)
}
}
}
我收到以下错误:
Key path value type 'String?' cannot be converted to contextual type 'String'
我可以使用 \.name!
来解决,但我想提供一个默认值(类似于 \.name ?? "default"
)。
我怎样才能做到这一点?
有一个 TableColumn
init 可以让您在闭包中创建内容
var body: some View {
Table(items) {
TableColumn("Name") { item in
Text(item.name ?? "default")
}
}
}
或者用包裹属性
解决
extension Item {
var itemName: String {
name ?? "default"
}
}
在视图中
var body: some View {
Table(items) {
TableColumn("Name", value: \.itemName)
}
}
我有这个示例代码:
struct Item: Identifiable {
var id = UUID()
var name: String?
}
struct ItemTable: View {
let items: [Item]
var body: some View {
Table(items) {
TableColumn("Name", value: \.name)
}
}
}
我收到以下错误:
Key path value type 'String?' cannot be converted to contextual type 'String'
我可以使用 \.name!
来解决,但我想提供一个默认值(类似于 \.name ?? "default"
)。
我怎样才能做到这一点?
有一个 TableColumn
init 可以让您在闭包中创建内容
var body: some View {
Table(items) {
TableColumn("Name") { item in
Text(item.name ?? "default")
}
}
}
或者用包裹属性
解决extension Item {
var itemName: String {
name ?? "default"
}
}
在视图中
var body: some View {
Table(items) {
TableColumn("Name", value: \.itemName)
}
}