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' 没有下标成员)的主要内容,如果未能解决你的问题,请参考以下文章

swift记录

如何使用 Swift 将文本复制到剪贴板/粘贴板

JQ的map/reduce/filter/sort/reverse

Swift将对象添加到数组会追加副本而不是引用? [复制]

将领域从 Bundle 复制到 Documents,然后将其读入本地常量,在 Swift 2.0 中

为啥不在swift 3中将database.db从bundle复制到文档目录? [复制]