我正在从我的iOS应用程序写入和读取文件:
func saveChecklistItems() {
let data = NSMutableData()
let archiver = NSKeyedArchiver(forWritingWith: data)
archiver.encode(items, forKey: "ChecklistItems")
archiver.finishEncoding()
print("save \(dataFileDir())")
data.write(toFile: dataFileDir(), atomically: true)
}
func loadChecklistItems() {
print("load \(dataFileDir())")
let path = dataFileDir()
if FileManager.default.fileExists(atPath: path) {
if let data = NSData.init(contentsOfFile: path) {
do {
let unarchiver = try NSKeyedUnarchiver(forReadingFrom: data as Data)
items = unarchiver.decodeObject(forKey: "ChecklistItems") as! [CheckListItem]
unarchiver.finishDecoding()
} catch {
print(error)
}
}
}
}
func documentsDirectory() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as [String]
return paths[0]
}
func dataFileDir() -> String {
return documentsDirectory().appending("Checklists.plist")
}
但是每次我按“在Xcode中运行”应用程序都会以新ID部署在iPhone上:
保存 /var/mobile/Containers/Data/Application/4684F231-7A41-461C-AD5C-FB0F66A9DA31/DocumentsChecklists.plist
加载 / var / mobile /容器/数据/应用程序/CFE42D59-6F3F-4D47-96B5-4F81C640127A/DocumentsChecklists.plist
这是我开发iOS的第一步,我想知道在这种情况下我需要做什么?将应用程序ID设置为static吗?还是其他?
答案 0 :(得分:1)
我建议您在使用文件夹和文件时使用URL而不是字符串
func documentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
func dataFileDir() -> URL {
return documentsDirectory().appendingPathComponent("Checklists.plist")
}
并将您的写入更改为
try data.write(to: dataFileDir(), options: .atomic)