读取 PLIST 文件 Dict of Dict
Reading a PLIST file Dict of Dict
我正在尝试读取 Dictionary
中包含 Dictionary
的 plist 文件
示例:["Name":["Age":"Two", "Height":"Short"]]
这是我阅读文件的方式:
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path))
let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String:Any]
print(dataFromPlist)
} catch {
print(error)
}
但我的结果 print(dataFromPlist)
返回以下内容:
["Name": {
Age = 1;
Height = 1;
}]
如何转换我当前读取方法的结果或读取 .plist
文件,以便准确取回我保存到其中的内容:
["Name":["Age":"Two", "Height":"Short"]]
如果您只使用 [String:String]:
类型的嵌套字典,请尝试明确设置字典的格式
let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String : [String : String ] ]
根据您的示例数据,我创建了一个 属性 列表,其源文件在 xml 中转换为此列表:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Name</key>
<dict>
<key>Age</key>
<string>Two</string>
<key>Height</key>
<string>Short</string>
</dict>
</dict>
</plist>
输出如你所愿:
["Name": ["Height": "Short", "Age": "Two"]]
项目根目录中带有 Example.plist 文件的完整示例代码:
let urlPath = Bundle.main.url(forResource: "Example", withExtension: "plist")
if let urlPath = urlPath {
do {
let data = try Data(contentsOf: urlPath)
let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String : [String : String ] ]
print(dataFromPlist)
} catch {
print(error)
}
}
}
我正在尝试读取 Dictionary
Dictionary
的 plist 文件
示例:["Name":["Age":"Two", "Height":"Short"]]
这是我阅读文件的方式:
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path))
let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String:Any]
print(dataFromPlist)
} catch {
print(error)
}
但我的结果 print(dataFromPlist)
返回以下内容:
["Name": {
Age = 1;
Height = 1;
}]
如何转换我当前读取方法的结果或读取 .plist
文件,以便准确取回我保存到其中的内容:
["Name":["Age":"Two", "Height":"Short"]]
如果您只使用 [String:String]:
类型的嵌套字典,请尝试明确设置字典的格式let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String : [String : String ] ]
根据您的示例数据,我创建了一个 属性 列表,其源文件在 xml 中转换为此列表:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Name</key>
<dict>
<key>Age</key>
<string>Two</string>
<key>Height</key>
<string>Short</string>
</dict>
</dict>
</plist>
输出如你所愿:
["Name": ["Height": "Short", "Age": "Two"]]
项目根目录中带有 Example.plist 文件的完整示例代码:
let urlPath = Bundle.main.url(forResource: "Example", withExtension: "plist")
if let urlPath = urlPath {
do {
let data = try Data(contentsOf: urlPath)
let dataFromPlist = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String : [String : String ] ]
print(dataFromPlist)
} catch {
print(error)
}
}
}