代码段:
这是来自名为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'
我试图制作一个对话词典,每个项目都是一个人。每个数组都是一个消息列表。消息是字典类型。知道为什么我收到这条消息吗?
答案 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)