我有 21 个数组,除以艺术家的字母表(artistaA、artistaB 等)和 21 个标题。 我想基于名为 VociMontagna 的结构构建一个独特的数组,但出现错误。我的目标是创建这个大数组,然后基于这个数组生成一个 TableView 以便使用过滤器。 我有 800 多个标题,所以我更喜欢将数组分开。
这里是代码:
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)
这结合了两个数组并在一个步骤中将它们构造出来。
关于arrays - 用许多数组构建结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284580/