如何以编程方式制作plist内容?

问题描述 投票:0回答:2

这是我下面的plist内容,有没有办法用代码制作这个内容?而只是像字符串一样?

let test = """
<?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>Label</key>
          <string>com.yourdomain.onstartup</string>
          <key>LimitLoadToSessionType</key>
          <string>Aqua</string>
          <key>Program</key>
          <string>/Applications/On Startup.app/Contents/MacOS/On Startup</string>
          <key>RunAtLoad</key>
          <true/>
</dict>
</plist>
"""
swift plist
2个回答
0
投票
import Foundation

let plist: [String: Any] = [
    "Label": "com.yourdomain.onstartup",
    "LimitLoadToSessionType": "Aqua",
    "Program": "/Applications/On Startup.app/Contents/MacOS/On Startup",
    "RunAtLoad": true
]

let data = try! PropertyListSerialization.data(
    fromPropertyList: plist,
    format: .xml,
    options: 0
)
let string = String(decoding: data, as: UTF8.self)
print(string)

输出:

<?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>Label</key>
    <string>com.yourdomain.onstartup</string>
    <key>LimitLoadToSessionType</key>
    <string>Aqua</string>
    <key>Program</key>
    <string>/Applications/On Startup.app/Contents/MacOS/On Startup</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

0
投票

对于

Codable
数据,您可以使用
PropertyListEncoder
,其工作方式与您可能更熟悉的
JSONEncoder
类似。

© www.soinside.com 2019 - 2024. All rights reserved.