Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios swift 3中for循环内的应用程序崩溃_Ios_Swift - Fatal编程技术网

Ios swift 3中for循环内的应用程序崩溃

Ios swift 3中for循环内的应用程序崩溃,ios,swift,Ios,Swift,在这里,我刚刚获得数组计数并使用for循环,但在完成数组计数后在let arr=arrayAdaptor[I]这一行崩溃了。我不知道为什么会崩溃,有人能帮我解决这个问题吗 var arrayAdaptor = [Struct_Row_Rating]() for i in 0...arrayAdaptor.count { let arr = arrayAdaptor[i] let number = arr.row let

在这里,我刚刚获得数组计数并使用for循环,但在完成数组计数后在let arr=arrayAdaptor[I]这一行崩溃了。我不知道为什么会崩溃,有人能帮我解决这个问题吗

var arrayAdaptor  = [Struct_Row_Rating]()

for i in 0...arrayAdaptor.count {
            let arr = arrayAdaptor[i]
            let number = arr.row
            let row = number + 1
            dict.updateValue("\(arr.rating)", forKey: "\(row)")
            print(dict)
        }
struct Struct_Row_Rating {
    var row: Int
    var rating: Double

    init(row: Int , rating: Double) {
        self.row = row
        self.rating = rating

    }}
接线员。。。超出了数组的范围。你必须写作

for i in 0..<arrayAdaptor.count
在Swift中基本上不使用这些基于索引的for循环

使用快速枚举:

如果你真的需要索引

for (index, arr) in arrayAdaptor.enumerated() {
接线员。。。超出了数组的范围。你必须写作

for i in 0..<arrayAdaptor.count
在Swift中基本上不使用这些基于索引的for循环

使用快速枚举:

如果你真的需要索引

for (index, arr) in arrayAdaptor.enumerated() {
使用0…arrayAdaptor.count范围样式的原因避免使用它,只需使用数组的枚举:

如果您不想让任何索引尝试此操作:

使用0…arrayAdaptor.count范围样式的原因避免使用它,只需使用数组的枚举:

如果您不想让任何索引尝试此操作:


答案中未提及的选项之一是forEach方法

arrayAdaptor.forEach { item in
   print(item)
}

//你的情况:

arrayAdaptor.forEach { item in
    let arr = item
    let number = item.row
    let row = number + 1
    dict.updateValue("\(arr.rating)", forKey: "\(row)")
    print(dict)
}
这与瓦迪安的回答中提到的..in的便利差不多:

for arr in arrayAdaptor { ... }

答案中未提及的选项之一是forEach方法

arrayAdaptor.forEach { item in
   print(item)
}

//你的情况:

arrayAdaptor.forEach { item in
    let arr = item
    let number = item.row
    let row = number + 1
    dict.updateValue("\(arr.rating)", forKey: "\(row)")
    print(dict)
}
这与瓦迪安的回答中提到的..in的便利差不多:

for arr in arrayAdaptor { ... }
从Swift 4可以使用

i、 。。。优于您可以使用的Swift 4中的i..


i、 。。。优于i..您也可以通过“映射”函数迭代循环:

    let _ = arrayAdaptor.map({ adaptor in

            let number = adaptor.row
            let row = number + 1

            dict.updateValue("\(adaptor.rating)", forKey: "\(row)")
            print(dict)
     })

您还可以通过“映射”函数迭代循环:

    let _ = arrayAdaptor.map({ adaptor in

            let number = adaptor.row
            let row = number + 1

            dict.updateValue("\(adaptor.rating)", forKey: "\(row)")
            print(dict)
     })

显然,数组计数给了1个额外的索引。它将如何获得更多的索引我已经打印了保存的数组它正在保存我选择的内容在0中得到了保存@Desdenovafor I…arrayAdaptor.count-1显然数组计数给了1个额外的索引。它将如何获得更多的索引我已经打印了保存的数组它正在保存我选择的内容在中得到了保存@Desdenovafor I0…arrayAdaptor.count-1基于索引和C样式不相同。由于swift3.index-based和C-style不一样,基于C-style索引的for循环从语言中消失了。自Swift 3以来,基于循环的C风格索引从语言中消失。使用枚举索引而不考虑枚举索引是毫无意义的。使用枚举索引而不考虑枚举索引是毫无意义的。