【问题标题】:Swift arrays of Swift dictionariesSwift 字典的 Swift 数组
【发布时间】:2015-05-10 00:45:20
【问题描述】:

我将这个数组初始化为一个空数组:

var dataArray:[Any] = []

我将字典添加到dataArray,它看起来像这样:

[[onlineStatus: Offline, whatDoing: , gamerTag: KgLui720, id: 2533274926939486], [onlineStatus: Offline, whatDoing: , gamerTag: BigBear46, id: 2533274801083843], [onlineStatus: Online, whatDoing: Watching TV, gamerTag: PeeMilroy12, id: 2533274975595658], [onlineStatus: Offline, whatDoing: , gamerTag: BR0, id: 2533275031633640], [onlineStatus: Offline, whatDoing: , gamerTag: jerrycia224, id: 2533274959352491]]

字典数组:

var index = 0

while index < dataArray.count{
    let row = table.rowControllerAtIndex(index) as tableRowController
    let theScreenName:NSString = dataArray[index]["gamerTag"]
    row.screenNameLabel.setText(theScreenName)
    index++
}

这给出了错误:

'Any' does not have a member named subscript

任何帮助将不胜感激。

【问题讨论】:

    标签: ios arrays xcode swift dictionary


    【解决方案1】:

    您应该更具体地了解您的数组可以存储的内容,即具有String 键和AnyObject 值的对象。因此,该数据类型的语法为[String: AnyObject]。这应该允许您使用下标符号:

    var dataArray: [[String: AnyObject]] = []
    

    你也可以投射它:

    let theScreenName: NSString = (dataArray[index] as [String: AnyObject])["gamerTag"]
    

    但是,如果您从一开始就明确表明这是您的意图,您的代码将会更加连贯。

    【讨论】:

    • 感谢您的回答!我还是有点麻烦。你给我的'let theScreenName'代码说'Int'不能转换为'Range'
    • @GregPappok 您是否尝试将问题中的第一行代码替换为我在此处给出的第一行代码,并在尝试第一部分之前保持原样?这就是我推荐的方式。
    • 是的,我做到了。我刚刚想通了: let theScreenName: NSString = (dataArray[index] as [String: AnyObject])["gamerTag"] as NSString 为我工作。谢谢!
    • @GregPappok 我很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多