如何更新混合类型(特别是数组)的Swift字典值

时间:2018-08-06 22:27:52

标签: swift dictionary types

我有一个混合类型的字典(字符串,NSImage和一个数组)。当追加到数组时,出现错误“类型为'Any ??'的值”没有成员“追加””。我看不到如何将“ file_list”值转换为数组,因此可以向其附加值。

            var dataDict: [String:Any?] = [
                "data_id" : someString,
                "thumbnail" : nil,
                "file_list" : [],
            ]
            // do stuff... find files... whirrr wizzzz
            dataDict["thumbnail"] = NSImage(byReferencingFile: someFile)
            dataDict["file_list"].append( someFile ) <- ERROR: Value of type 'Any??' has no member 'append'

1 个答案:

答案 0 :(得分:2)

不能。您需要首先获取键值,将其从Any转换为[String],附加新值,然后将修改后的数组值分配给键:

if var array = dataDict["file_list"] as? [String] {
    array.append(someFile)
    dataDict["file_list"] = array
}

if let array =  dataDict["file_list"] as? [String] {
    dataDict["file_list"] = array + [someFile]
}

另一种选择是按照OOPer的注释中的建议创建自定义结构