【问题标题】:How to give default value to TableColumn in Table如何为表中的 TableColumn 赋予默认值
【发布时间】:2021-06-11 09:28:55
【问题描述】:

我有这个示例代码:

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)
        }
    }
}

我收到以下错误:

键路径值类型“字符串?”无法转换为上下文类型“字符串”

我可以使用\.name! 解决问题,但我想提供一个默认值(类似于\.name ?? "default")。

我怎样才能做到这一点?

【问题讨论】:

  • @JoakimDanielson 更改模型结构似乎并不理想。
  • 你可以给 Item 结构中的 name 一个默认值,比如 var name:String = “”,而不是让它成为可选的。

标签: swift swiftui wwdc


【解决方案1】:

有一个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)
    }
}

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2023-03-14
    • 2011-02-19
    • 2014-04-26
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多