应用程序ID和读取/写入文件

时间:2019-06-07 12:42:51

标签: ios swift

我正在从我的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吗?还是其他?

1 个答案:

答案 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)