Попробуйте установить формат словаря в явном виде, если вы работаете только с вложенным словарем, имеющим тип [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"]]
Полный пример кода с примером Файл .plist в root проекта:
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)
}
}
}