PropertyListEncoder 忽略 .binary outputFormat
PropertyListEncoder is ignoring .binary outputFormat
我写了一些示例代码来记录如何使用 PropertyListEncoder
.
将 Swift 对象编码为 属性 列表
代码有效,但我想输出到二进制 属性 列表。 (那些更快更紧凑)
但是,PropertyListEncoder 似乎忽略了我的设置 outputFormat = .binary
并将文件写为 XML 无论如何:
这是代码(一个 MacOS 命令行工具,只是因为这是一种编写一些测试代码的低开销方式:)
import Foundation
var array = ["one", "two", "three"]
let plistEncoder = PropertyListEncoder()
plistEncoder.outputFormat = .binary
if let data = try? plistEncoder.encode(array)
{
let url = URL(fileURLWithPath:"array.plist")
do {
try data.write(to: url)
} catch {
print("Error writing file. Error = \(error)" )
}
}
如果您在 BBEdit 中打开生成的文件,您将看到以下内容:
<?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">
<array>
<string>one</string>
<string>two</string>
<string>three</string>
</array>
</plist>
那分明是XML的格式。我错过了什么?
打印data
,你会看到它是明显的二进制格式,从bplist00
开始
<62706c69 73743030 a3010203 536f6e65 5374776f 55746872 6565080c 10140000 00000000 01010000 00000000 00040000 00000000 00000000 00000000 001a>
我写了一些示例代码来记录如何使用 PropertyListEncoder
.
代码有效,但我想输出到二进制 属性 列表。 (那些更快更紧凑)
但是,PropertyListEncoder 似乎忽略了我的设置 outputFormat = .binary
并将文件写为 XML 无论如何:
这是代码(一个 MacOS 命令行工具,只是因为这是一种编写一些测试代码的低开销方式:)
import Foundation
var array = ["one", "two", "three"]
let plistEncoder = PropertyListEncoder()
plistEncoder.outputFormat = .binary
if let data = try? plistEncoder.encode(array)
{
let url = URL(fileURLWithPath:"array.plist")
do {
try data.write(to: url)
} catch {
print("Error writing file. Error = \(error)" )
}
}
如果您在 BBEdit 中打开生成的文件,您将看到以下内容:
<?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">
<array>
<string>one</string>
<string>two</string>
<string>three</string>
</array>
</plist>
那分明是XML的格式。我错过了什么?
打印data
,你会看到它是明显的二进制格式,从bplist00
<62706c69 73743030 a3010203 536f6e65 5374776f 55746872 6565080c 10140000 00000000 01010000 00000000 00040000 00000000 00000000 00000000 001a>