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中是新的,它们是此问题的主要焦点。