访问tableview的Dictionary元素

时间:2017-08-07 00:04:28

标签: ios arrays dictionary tableview

我已将字典传递给第二个视图控制器并将其分配给数组,我想我可以通过这种方式更轻松地访问数据:

var myAlerts: NSDictionary!

字典有三个元素:Id(我不关心),alertDate和alertNote。

我正在尝试将这些元素放入tableView中,但却在努力解决这个问题。

我想过将它移动到两个阵列并以这种方式访问​​它,这很麻烦,但它至少让我更进一步。

以下是字典过去到第二个控制器后的原始数据:

{
    alerts =     (
                {
            alertDate = "2017-07-16";
            alertNote = "Rob is the worlds greatest friend";
            id = 2;
        },
            {
        alertDate = "2017-07-17";
        alertNote = "This is a test of the emergency system";
        id = 1;
        }
    );
}

当我尝试将值移动到两个数组中时:

func CreateArray() {
    for i in 0...myAlerts.count {
        alertsDate[i] = myAlerts["alerts"]["alertDate"]
        alertsNote[i] = myAlerts["alerts"]["alertNote"]
    }
}

我得到了众所周知的Type Any?没有下标成员。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

带有该数据的

myAlerts现在是一个包含数组字典的字典。 (所以顶级是一个字典,有一个键/值对,它是[String:Any]对象的数组类型)。

由于字典值的类型为Any,因此在这种情况下无法推断出键alerts的值的类型。所以你必须首先尝试将它转换为特定的类型,在这种情况下是一个字典数组,即[[String:Any]]

所以这应该摆脱你的错误:

func CreateArray() {
    for i in 0...myAlerts.count {
        let alertArray = myAlerts["alerts"] as! [[String:Any]]
        alertsDate.append(alertArray[i]["alertDate"] as! String)
        alertsNote.append(alertArray[i]["alertNote"] as! String)
    }
}

注意:我必须将alertsDate和alertsNote数组更改为使用append,因为在我的演示代码中我没有数组中的现有项目并且使用和索引会导致错误。