Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SwiftUI中使用ForEach循环导致程序崩溃_Swiftui - Fatal编程技术网

在SwiftUI中使用ForEach循环导致程序崩溃

在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")] } 要使用数据模型,

我是Swift和SwiftUI的初学者

我在PeopleModel.swift文件中设置了示例数据模型,下面是代码:

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)并且可以工作。是否有一种“更好”的方法来循环遍历数组并生成这样的视图?请确保包含
,这取决于您试图实现的目标。另一个解决办法是让人们遵守法律。然后可以迭代数组中的项,而不是计数,这样就不必担心索引了。