plist 形式的字典字典的键类型是啥?
Posted
技术标签:
【中文标题】plist 形式的字典字典的键类型是啥?【英文标题】:What's the type of keys of a dictionary of dictionaries in the form of a plist?plist 形式的字典字典的键类型是什么? 【发布时间】:2018-01-17 20:16:40 【问题描述】:Xcode 9.2 ; 斯威夫特 4
我手动制作了一个 plist 形式的字典。它是一个字典字典,如下图所示:
现在我想从 plist 中获取信息,所以我尝试对其进行解码。但是,我不得不给出所涉及元素的类型。那么,问题是,这个 plist 描述的字典的形式是什么? (例如:字符串数组将被写为 [String])。 提前致谢。
更新:这是我正在使用的代码,以及我尝试 [String:[String:Int]] 时的结果。
【问题讨论】:
【参考方案1】:根字典是 [String:Any]
或更具体的 [String[String:Int]]
,仅考虑 visible 子字典。
如果其他字典包含与 [String:Int]
不同的类型,则您不能在不编写自定义初始化程序的情况下使用 PropertyListDecoder()
。
更新:
这是一个 q&d 示例,它以通常的方式将字典序列化为属性列表并使用 PropertyListDecoder()
对其进行解码。
在操场上试试
let dict = ["diccioNum": ["Num3": 3, "Num4": 4, "Num6": 6, "Num8": 8, "Num9": 9, "Num5": 5, "Num1": 1, "Num7": 7, "Num2": 2]]
do
let plistData = try PropertyListSerialization.data(fromPropertyList: dict, format: .xml, options: 0)
let plist = try PropertyListDecoder().decode([String: [String:Int]].self, from: plistData)
print(plist)
catch print(error)
【讨论】:
它不起作用。我在操场上用代码更新了帖子。 你没有提到你将使用PropertyListDecoder
。你期待什么样的结果?如果要将属性列表解码为结构,则必须为内部字典的每个键声明一个属性。请发布代码,而不是屏幕截图。
其他子字典和可见的一样,只是NUM被ALG、GEO和DYA代替。有没有办法知道键的类型,或者我必须像示例中那样使用代码创建 plist?以上是关于plist 形式的字典字典的键类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章