问题描述
我需要快速解析 plist 并维护 plist 字典中条目的排序。
首选的解析方法是使用 Codable
协议,因为我想从我的 plist 中创建自定义对象。
我已经设置了以下示例:
// example plist
<?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>container</key>
<dict>
<key>first</key>
<string>Rocinante</string>
<key>second</key>
<string>Donnager</string>
<key>third</key>
<string>Behemoth</string>
</dict>
</dict>
</plist>
// example parsing code (playground-ready)
import Foundation
let plistURL: URL = Bundle.main.url(forResource: "test",withExtension: "plist")!
let data = try! Data(contentsOf: plistURL)
let decoder = PropertyListDecoder()
let result = try! decoder.decode(Model.self,from: data)
struct Model: Decodable {
let container: Dictionary<String,String> // sure enough entries are in random order :(
}
我尝试使用来自 swift-collections 的新 OrderedDictionary
,但它不符合 Codable 协议。
也许一些自定义解析为 Array 或 OrderedDictionary 会起作用,但我还没有弄清楚如何做到这一点(或者甚至可能)。
那么 – 如何在保持字典顺序的同时使用 Codable
解析 plist?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)