我目前正在尝试使用 PropertyListEncoder
和 Swift 4 的 Codable
协议来解码属性列表。
我尝试了一些基本类型(字符串,整数等),这些都可以正常工作,但我无法解码 URL。我阅读了多篇关于此主题的文章,我非常确定这应该可以正常工作。然而,以下示例在解码时失败并显示以下错误:
Expected to decode Dictionary<String, Any> but found a string/data instead.
我认为这在使用
.json
文件时会正确工作,但我没有找到有关JSONDecoder
和PropertyListDecoder
对可解码类型支持不同的任何信息。这可能是由于解析器不兼容引起的吗?我正在使用Xcode 9.1和Swift 4.0.2。
示例
.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>web</key>
<string>https://link.to</string>
</dict>
</plist>
示例 Swift 代码:
struct Info: Codable {
let web: URL
}
func loadInfo() {
let propertiesDecoder = PropertyListDecoder()
let data = try! Data(contentsOf:
Bundle.main.url(forResource: "web", withExtension: "plist")!)
try! propertiesDecoder.decode(Info.self, from: data)
}
感谢您的任何帮助!