包含包含字典的数组的字典?

时间:2014-11-17 00:37:13

标签: ios swift

代码段:

这是来自名为Static的结构:

static var messages: Dictionary = [:]

这是一个类函数:

if Static.messages[sender] == nil{ //no message history, create array then append
    var messages: [NSMutableDictionary] = [message]
    Static.messages[sender] = messages
}
else{ //there is message history, so append
    (Static.messages[sender] as Array).append(message)
}

错误:

Immutable value of type 'Array<T>' only has mutating members named 'append'

我试图制作一个对话词典,每个项目都是一个人。每个数组都是一个消息列表。消息是字典类型。知道为什么我收到这条消息吗?

1 个答案:

答案 0 :(得分:2)

如果您在编译器中清楚地了解您的词典所包含的内容,那么您将不会需要使这个难以进行的演员表。根据您发布的内容,Static.messages的实际类型需要与Dictionary<NSObject, Array<NSMutableDictionary>>类似。

您当前的尝试将字典值转换为Array,然后尝试追加 - 这会失败,因为Swift会将此类转换的结果视为不可变。你需要做的只是使用可选的链接:

// instead of:
(Static.messages[sender] as Array).append(message)

// use:
Static.messages[sender]?.append(message)