Arrays 构建包含多个数组的结构
我有21个数组,除以字母表(Artista、artistaB等),代表艺术家,21个代表标题。 我想基于名为VociMontagna的结构构建一个独特的数组,但我遇到了一个错误。我的目标是将这个大阵列装箱,然后基于这个阵列生成一个TableView,以便使用过滤器。 我有800多个标题,所以我更喜欢将数组分开 代码如下:Arrays 构建包含多个数组的结构,arrays,swift,structure,Arrays,Swift,Structure,我有21个数组,除以字母表(Artista、artistaB等),代表艺术家,21个代表标题。 我想基于名为VociMontagna的结构构建一个独特的数组,但我遇到了一个错误。我的目标是将这个大阵列装箱,然后基于这个阵列生成一个TableView,以便使用过滤器。 我有800多个标题,所以我更喜欢将数组分开 代码如下: func creaListaCanzoni(){ var tot = 0 var a = 0 for _ in stride(f
func creaListaCanzoni(){
var tot = 0
var a = 0
for _ in stride(from: 0, to: titoliA.count , by: 1) {
let voce = VociMontagna(titolo: titoliA[a], artista: artistaA[a])
listaCanzoni.append(voce)
a = a + 1
tot = tot + 1
print("Tot: \(a)--Nome: \(listaCanzoni[a].nomeTesto)")
}
}
结构如下:
import UIKit
struct VociMontagna {
let titolo : String
let artista : String
}
首先,不清楚为什么要将这些数据分开。800张唱片相当少。维护40多个阵列似乎非常复杂 你的错误是你数得太多了。最后一个索引是
titoliA.count-1
。索引从零开始。而不是这一行:
for _ in stride(from: 0, to: titoliA.count , by: 1) {
你是说:
for a in titolaA.indices {
整个函数如下所示:
func creaListaCanzoni(){
for a in titolaA.indices {
let voce = VociMontagna(titolo: titoliA[a], artista: artistaA[a])
listaCanzoni.append(voce)
print("Tot: \(a)--Nome: \(listaCanzoni[a].nomeTesto)")
}
}
也就是说,如果您确实需要合并两个数组(我建议您不要这样做;只需将它们存储为单个结构数组),那么更好的工具是:
let listaCanzoni = zip(titoliA, artistaA).map(VociMontagna.init)
这将组合两个数组,并在一个步骤中构造出它们。如果
listaCanzoni
一开始是空的,那么根据您的逻辑,它应该抛出一个错误,因为您在访问索引之前增加了访问索引。如果在索引递增之前将print语句移动到,则错误应该消失