Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 'Any' 没有下标成员)
Posted
技术标签:
【中文标题】Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 \'Any\' 没有下标成员)【英文标题】:Swift: Copying oldArray[][] to newArray[][] causes error (Type 'Any' has no subscript member)Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 'Any' 没有下标成员) 【发布时间】:2017-09-19 23:35:48 【问题描述】:在我的 collectionView 应用程序中使用 Swift。我正在读取一个 plist 文件以显示数组中的信息。
这是读取 plist 的代码,它创建了一个名为 section[section #][item #] 的数组,让我可以访问根数组中的项目。
var Items = [Any]()
let url = Bundle.main.url(forResource:"items", withExtension: "plist")!
do
let data = try Data(contentsOf:url)
let sections = try PropertyListSerialization.propertyList(from: data, format: nil) as! [[Any]]
for (index, section) in sections.enumerated()
//print("section ", index)
for item in section
//print(item)
print("specific item: - \(sections[1][0])") // (Section[] Item[])
print("section count: - \(sections.count)")
Items = sections
catch
print("This error must never occur", error)
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
switch checkGroupChoice
case 0:
print("From: Items")
print("specific item 2: - \(Items[0][1])")
return Items.count
我创建了 var Items = [Any]()
来将 sections[][]
中的所有内容传输到数组 Items,这样我就可以将它用作我的 collectionsView 的全局数组,但出现错误。
类型 'Any' 没有下标成员
上线print("specific item 2: - \(Items[0][1])")
如何将sections[][]
成功转入Items
?我确定我没有正确创建数组。谢谢
【问题讨论】:
Items 是一维数组。您正试图将其索引为二维数组。将其更改为var Items = [[Any]]()
完美如此简单,谢谢!如果需要,您可以将其添加为答案
【参考方案1】:
Items 是一维数组。您正试图将其索引为二维数组。将其更改为:
var Items = [[Any]]()
现在您可以分配给它并附加到它并将其索引为二维数组。每个维度都需要一组匹配的方括号..
例子:
1D array: [Any]()
2D array: [[Any]]()
3D array: [[[Any]]]()
【讨论】:
以上是关于Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 'Any' 没有下标成员)的主要内容,如果未能解决你的问题,请参考以下文章
JQ的map/reduce/filter/sort/reverse