arrays - SwiftUI - Text() 调用中的“表达式类型不明确,没有更多上下文”
问题描述
我目前正在尝试使用导航链接将一组值传递到详细视图中。但是,每当我尝试传递数组时,我指定用于显示导航链接的文本函数调用都会给我“表达式类型不明确而没有更多上下文”错误。当我传递简单的单个值时,这不是问题,但我需要能够在详细视图中显示数组中的每个元素。
struct Item: Identifiable{
let id=UUID()
let name:String
}
struct Group: Identifiable{
let id:Int
let thing:String
let items:[Item]
}
//the "Item" objects are currently placeholders.
var groups = [
Group(id: 0,
thing:"Tops",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 2,
thing:"Jeans",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 3,
thing:"Skirts",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 4,
thing:"Shoes",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 5,
thing:"Pajamas",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 6,
thing:"Jackets",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 7,
thing:"Hats",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")]),
Group(id: 8,
thing:"Jewelry",
items:[Item(name:"first"), Item(name:"second"), Item(name:"third")])
]
var body: some View {
List(groups){ group in
NavigationLink(destination : ClosetDetailView(items: group.items)){
//location of error
Text(group.thing)
}
}
.background(Color.pinkish)
.navigationBarTitle("Categories")
}
}
struct PlaceholderView:View {
var body:some View{
Text("placeholder")
}
}
struct ClosetDetailView:View {
struct Item: Identifiable{
let id=UUID()
let name:String
}
var items:[Item]
var body : some View{
List(items){ item in
HStack{
Text(item.name)
}
}
}
}
解决方案
首先,要启用到详细视图的导航,您应该将列表嵌入到 NavigationView 中:
struct ContentView: View {
var body: some View {
NavigationView {
List(groups) { group in
NavigationLink(destination: ClosetDetailView(items: group.items)) {
Text(group.thing)
.listRowBackground(Color.red)
}
}
.navigationBarTitle("Categories")
}
}
}
如果将参数传递给函数时出现错误,我们通常会收到错误“表达式类型不明确,没有更多上下文”。在这种情况下,您的壁橱详细信息视图需要一个 Item 数组。问题是您在 ClosetDetailView 内部和外部定义了一个 Item Struct。将项目传递给 ClosetDetailView 时出现此错误可能会导致整个 NavigationLink 出现错误。删除 ClosetDetailView 中的结构,错误消失:
struct ClosetDetailView:View {
var items:[Item]
var body : some View{
List(items){ item in
HStack{
Text(item.name)
}
}
}
}
推荐阅读
- python - 我收到一个错误代码,提示我的机器人缺少权限,但在尝试赋予某人角色时它有管理员
- sql-server - 基于存储过程的表列中的默认值
- r - 如何将栅格值从一个栅格设置到另一个栅格而不会出错
- python - 去噪自编码器模型的模型精度和验证精度保持在恒定值
- javascript - 有没有办法限制我使用 JavaScript 从传感器读取数据的时间?
- python - 在 Python 中将时间从 MM/DD/YYYY 转换为 M/D/YYYY
- internet-explorer - 从 Edge 中删除“您处于 Internet Explorer 模式”
- python - AttributeError:模块 'tutorial' 没有 Gnuradio Companion 提供的属性 'my_qpsk_demod_cb'
- tableau-desktop - Tableau 工作表中的损益表小计
- c++ - 乘以常量时,初始化器元素不是编译时常量,C++