在SwiftUI中使用ForEach循环导致程序崩溃
我是Swift和SwiftUI的初学者 我在PeopleModel.swift文件中设置了示例数据模型,下面是代码:在SwiftUI中使用ForEach循环导致程序崩溃,swiftui,Swiftui,我是Swift和SwiftUI的初学者 我在PeopleModel.swift文件中设置了示例数据模型,下面是代码: import Foundation struct People { var name : String static let demoPeople = [ People(name:"Stephen"), People(name:"John"), People(name:"Jack")] } 要使用数据模型,
import Foundation
struct People {
var name : String
static let demoPeople = [
People(name:"Stephen"),
People(name:"John"),
People(name:"Jack")]
}
要使用数据模型,我想我会尝试使用以下代码遍历列表:
import SwiftUI
struct ListPersonView: View {
let testData = People.demoPeople
var body: some View {
VStack {
ForEach((0...testData.count), id: \.self) {result in
Text( self.testData[result].name)
}
Text("Ready or not, here I come!")
}
}//View
}//struct
struct ListPersonView_Previews: PreviewProvider {
static var previews: some View {
ListPersonView()
}
}
当我运行预览程序时,程序崩溃了。我必须承认我错过了一些简单的事情,但如果能告诉我哪里出了问题,我将不胜感激。谢谢大家! 您的
ForEach
循环中的范围是开放的,因此当testData
的长度等于testData
时,您将在尝试访问self.testData[result].name
时遇到越界异常
将您的范围更改为
0..进行更改时,我得到一个无法推断复杂闭包返回类型的结果;添加显式类型以消除歧义,然后另一条消息使用未解析运算符“..”;你是说“…”吗?我明白了。更改为0…(testData.count-1)并且可以工作。是否有一种“更好”的方法来循环遍历数组并生成这样的视图?请确保包含,这取决于您试图实现的目标。另一个解决办法是让人们遵守法律。然后可以迭代数组中的项,而不是计数,这样就不必担心索引了。