在 Swift 中将字典写入文件
Write Dictionary to File in Swift
我正在尝试将一个简单的词典写入 swift 中的 .plist 文件。为方便起见,我已将代码写在字典 class 的扩展中。这是它的样子。
extension Dictionary {
func writeToPath (path: String) {
do {
// archive data
let data = try NSKeyedArchiver.archivedData(withRootObject: self,
requiringSecureCoding: true)
// write data
do {
let url = URL(string: path)
try data.write(to: url!)
}
catch {
print("Failed to write dictionary data to disk.")
}
}
catch {
print("Failed to archive dictionary.")
}
}
}
每次 运行 我都会看到“无法将字典数据写入磁盘”。路径有效。我正在使用“/var/mobile/Containers/Data/Application/(数字和字母)/Documents/favDict.plist”。
字典类型为 Dictionary,仅包含 [0:0](用于 simplicity/troubleshooting 目的)。
为什么这不起作用?您有更好的将字典写入磁盘的解决方案吗?
URL(string
是错误的API。它要求字符串以 https://
.
这样的方案开头
在路径以斜杠开头的文件系统中,您必须使用
let url = URL(fileURLWithPath: path)
正如 WithPath 暗示的那样。
一种更快捷的方法是PropertyListEncoder
extension Dictionary where Key: Encodable, Value: Encodable {
func writeToURL(_ url: URL) throws {
// archive data
let data = try PropertyListEncoder().encode(self)
try data.write(to: url)
}
}
我正在尝试将一个简单的词典写入 swift 中的 .plist 文件。为方便起见,我已将代码写在字典 class 的扩展中。这是它的样子。
extension Dictionary {
func writeToPath (path: String) {
do {
// archive data
let data = try NSKeyedArchiver.archivedData(withRootObject: self,
requiringSecureCoding: true)
// write data
do {
let url = URL(string: path)
try data.write(to: url!)
}
catch {
print("Failed to write dictionary data to disk.")
}
}
catch {
print("Failed to archive dictionary.")
}
}
}
每次 运行 我都会看到“无法将字典数据写入磁盘”。路径有效。我正在使用“/var/mobile/Containers/Data/Application/(数字和字母)/Documents/favDict.plist”。
字典类型为 Dictionary
为什么这不起作用?您有更好的将字典写入磁盘的解决方案吗?
URL(string
是错误的API。它要求字符串以 https://
.
在路径以斜杠开头的文件系统中,您必须使用
let url = URL(fileURLWithPath: path)
正如 WithPath 暗示的那样。
一种更快捷的方法是PropertyListEncoder
extension Dictionary where Key: Encodable, Value: Encodable {
func writeToURL(_ url: URL) throws {
// archive data
let data = try PropertyListEncoder().encode(self)
try data.write(to: url)
}
}