如何用swift中swift类或结构的动态键解码这个嵌套的dictionary.plist文件



我一直在互联网上搜索,以正确解析swift中的以下plist,但我找不到正确的方法。请帮助。我尝试过多个结构和类,但没有结果,数据不会像它应该的那样填充结构。如果我试图将它从bundle中强制转换为NSDictionary,它会起作用,但如果我试图迭代它的所有字典(从class1、class2等(,则会显示为一个我无法迭代或使用的值。

<?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>class1</key>
<dict>
<key>RANDOM_NAME1</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
<key>RANDOM_NAME2</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
</dict>
<key>class2</key>
<dict>
<key>RANDOM_NAME1</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
<key>RANDOM_NAME2</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
</dict>
<key>class3</key>
<dict>
<key>RANDOM_NAME1</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
<key>RANDOM_NAME2</key>
<dict>
<key>path</key>
<array>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
<string>test</string>
</array>
</dict>
</dict>
</dict>
</plist>

请注意,RANDOM_NAME1RANDOM_NAME2等是我不知道的随机密钥,它们的数量可能会有所不同。

您可以使用以下代码从plist文件读取信息:

Bundle.main.object(forInfoDictionaryKey: RANDOM_NAME1);

否则,你想接收所有plist文件作为字典与他一起工作,你可以使用这个代码:

Bundle.main.infoDictionary

最新更新