首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyListEncoder正在忽略.binary outputFormat

PropertyListEncoder正在忽略.binary outputFormat
EN

Stack Overflow用户
提问于 2020-05-19 23:57:33
回答 1查看 212关注 0票数 0

我编写了一些示例代码来记录如何使用PropertyListEncoder将Swift对象编码为属性列表。

代码可以工作,但我想输出到一个二进制属性列表。(它们更快、更紧凑)

但是,PropertyListEncoder似乎忽略了我设置的outputFormat = .binary,并将文件写为XML:

下面是代码(一个MacOS命令行工具,因为这是一种编写测试代码的低开销方法:)

代码语言:javascript
复制
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中打开生成的文件,则会看到以下内容:

代码语言:javascript
复制
<?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格式。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 00:08:38

打印data,您可以清楚地看到它是从bplist00开始的二进制格式

代码语言:javascript
复制
<62706c69 73743030 a3010203 536f6e65 5374776f 55746872 6565080c 10140000 00000000 01010000 00000000 00040000 00000000 00000000 00000000 001a>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61895404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档