在 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)
    }
}