如何在 SwiftUI 中显示字符串数组
How to show a String Array in SwiftUI
我正在构建一个教育应用程序,我在其中进行分类,然后显示每个类别中的故事。
我正在体验的使用是如何显示一个字符串数组。我可以毫无问题地显示字符串。希望能帮到你。
这是正在运行并显示“课程”(在本例中为故事)的详细视图代码:
struct StoryDetailView: View {
@EnvironmentObject var model: ContentModel
var body: some View {
let story = model.currrentStory
VStack {
Image(story?.featuredImage ?? "effort")
.resizable()
.scaledToFit()
Text(story?.title ?? "error")
Text(story?.description ?? "error description")
}
}
}
我试过这段代码来显示“解释”,在我的例子中称为“文本”。
ForEach(0..<(story?.text.count ?? ""), id: \.self) { index in
Text(story?.text[index] ?? "notext")
.padding(.bottom, 5)
}
我在“ForEach”行中收到此错误:无法将类型 'String' 的值转换为预期的参数类型 'Int'
如果我强制解包而不是使用“??”,应用程序会崩溃。
您应该在 ForEach
:
中遍历数组本身,而不是使用索引
ForEach(story?.text ?? []), id: \.self) { item in
Text(item).padding(.bottom, 5)
}
请注意,如果数组元素不是真正唯一的,则在 ForEach
id
上使用 .self
将失败或产生意外结果。考虑创建一个具有真正独特 Identifiable
元素的数据模型。
我正在构建一个教育应用程序,我在其中进行分类,然后显示每个类别中的故事。
我正在体验的使用是如何显示一个字符串数组。我可以毫无问题地显示字符串。希望能帮到你。
这是正在运行并显示“课程”(在本例中为故事)的详细视图代码:
struct StoryDetailView: View {
@EnvironmentObject var model: ContentModel
var body: some View {
let story = model.currrentStory
VStack {
Image(story?.featuredImage ?? "effort")
.resizable()
.scaledToFit()
Text(story?.title ?? "error")
Text(story?.description ?? "error description")
}
}
}
我试过这段代码来显示“解释”,在我的例子中称为“文本”。
ForEach(0..<(story?.text.count ?? ""), id: \.self) { index in
Text(story?.text[index] ?? "notext")
.padding(.bottom, 5)
}
我在“ForEach”行中收到此错误:无法将类型 'String' 的值转换为预期的参数类型 'Int'
如果我强制解包而不是使用“??”,应用程序会崩溃。
您应该在 ForEach
:
ForEach(story?.text ?? []), id: \.self) { item in
Text(item).padding(.bottom, 5)
}
请注意,如果数组元素不是真正唯一的,则在 ForEach
id
上使用 .self
将失败或产生意外结果。考虑创建一个具有真正独特 Identifiable
元素的数据模型。