【发布时间】:2020-11-28 02:36:00
【问题描述】:
我正在检索一个plist 文件,对其进行更新并将其写入磁盘。
1) 检索
func pListURL() -> URL? {
guard let result = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("somePlist.plist") else { return nil }
return result
}
2) 更新
var data: [String: Int] = [:]
if let url = pListURL() {
do {
let dataContent = try Data(contentsOf: url)
if let dict = try PropertyListSerialization.propertyList(from: dataContent, format: nil) as? [String: Int] {
data = dict
}
} catch {
print(error)
}
}
// update code
3) 写
if let path = pListURL() {
do {
let plistData = try PropertyListSerialization.data(fromPropertyList: data, format: .xml, options: 0)
try plistData.write(to: path)
} catch {
print(error)
}
}
奇怪的是我收到一条错误消息:
文件“somePlist.plist”无法打开,因为没有这样的文件。
即使当我检查plist 时,它实际上已按应有的方式正确创建和更新。据我所知,FileManager.default.url(for:in:appropriateFor:create: ) 的create 参数确保它“如果目录不存在则创建目录”,这意味着如果plist 不存在,则创建somePlist.plist。
【问题讨论】:
标签: ios swift plist nsfilemanager