Swift 如何为表中的TableColumn指定默认值

Swift 如何为表中的TableColumn指定默认值,swift,swiftui,wwdc,Swift,Swiftui,Wwdc,我有以下示例代码: struct项:可识别{ var id=UUID() 变量名称:字符串? } 结构ItemTable:视图{ 出租项目:[项目] var body:一些观点{ 表(项目){ TableColumn(“名称”,值:\.Name) } } } 我得到以下错误: 无法将键路径值类型“String”转换为上下文类型“String” 我可以用\.name解决,但我想给出一个默认值(类似于\.name???“default”) 我如何才能做到这一点?不知道视图表和表列,类似这样的内容

我有以下示例代码:

struct项:可识别{
var id=UUID()
变量名称:字符串?
}
结构ItemTable:视图{
出租项目:[项目]
var body:一些观点{
表(项目){
TableColumn(“名称”,值:\.Name)
}
}
}
我得到以下错误:

无法将键路径值类型“String”转换为上下文类型“String”

我可以用
\.name解决,但我想给出一个默认值(类似于
\.name???“default”


我如何才能做到这一点?

不知道视图
表列
,类似这样的内容

struct项:可识别、可散列{
var id=UUID()
变量名称:字符串?
}
结构ItemTable:视图{
let items:[项目]?=[]//为空
var body:一些观点{
ForEach(items!,id:\.self){item in
项目视图(表:项目)
}
}
}
结构项目视图:视图{
让表:项目
var body:一些观点{
文本(table.name??“默认值”)
}
}

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

@JoakimDanielson更改模型结构似乎并不理想。您可以在Item struct中为name指定一个默认值,如var name:String=“”,而不是将其设置为可选。Table和TableColumn在SwiftUI 3中是新的,它们是此问题的主要焦点。