1

初学者(?)问题在这里。我搜索了 StackOverflow 并尝试了几种解决方案,但无法解决此问题 - 我无法将任何内容保存到在将 App Groups 功能添加到目标后创建的 App Group 目录中。

当我尝试写入 Document 目录时,保存工作正常。之前,在切换到简单的 JSON 持久性之前,当我使用 Core Data 时,对 App Groups 的写入和读取工作正常。

附上我在 DataManager 单例类中的代码:

func getAppGroupURL() -> URL {
    if let groupUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.myName.appName") {
        print("Group Directory exists.")
        return groupUrl.appendingPathComponent("group.com.myName.appName")
    } else {
        print("Couldn't find directory, reverting to default.")
        let appUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        return appUrl
    }
}    


func saveToJSON(entries: [Entry]) {

    let groupURL = DataManager.shared.getAppGroupURL()
    let jsonURL =    groupURL.appendingPathComponent("entries").appendingPathExtension("json")
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted

    do {            
        let jsonData = try encoder.encode(entries)
        try jsonData.write(to: jsonURL)

        print("Encoded JSON data is:")
        print(String(data: jsonData, encoding: .ascii)!)

    } catch {
        print("Error encoding: " + error.localizedDescription)
    }
}

func getFromJSON() -> [Entry]? {
    let groupURL = DataManager.shared.getAppGroupURL()
    let jsonURL = groupURL.appendingPathComponent("entries").appendingPathExtension("json")

    let decoder = JSONDecoder()
    decoder.keyDecodingStrategy = .convertFromSnakeCase
    decoder.dateDecodingStrategy = .secondsSince1970

    do {
        let data = try Data(contentsOf: jsonURL)
        print("JSON data is: " + String(data: data, encoding: .ascii)!)
        let entries = try decoder.decode([Entry].self, from: data)
        print("Decoded JSON data is: \(entries)")
        return thingItems
    } catch {

        print("Error decoding: " + error.localizedDescription)
        return nil
    }
}

当我尝试使用 saveToJSON 函数,甚至是 FileManager 的 createFile(atPath:) 函数来编写时,我收到此错误消息:

组目录存在。错误编码:文件“entries.json”不存在。

当尝试使用getFromJSON函数保存时,我得到:错误解码:文件“entries.json”无法打开,因为没有这样的文件。

同样,当我使用默认文档目录时,这一切都有效,我能够坚持和阅读,但不能使用应用程序组目录......如果有人能指出这里有什么问题,我将不胜感激!

4

0 回答 0