【问题标题】:Saving a file with a variable of datatype 'Data" in Swift在 Swift 中保存具有数据类型“数据”变量的文件
【发布时间】:2020-08-12 12:57:36
【问题描述】:

我是编程新手,我正在尝试用 Swift 编写一个函数来下载 JSON 并解析它。 但是,JSON 非常复杂,我每天对来自服务器的数据请求数有限制。

有没有办法下载数据并将其作为“数据”保存到文件中,这样我就可以对文件中的这些数据运行所有测试,而不必每次都从服务器获取它?准备好后,我可以再次开始从服务器获取数据。

基本上我可以用文件的内容初始化一个数据变量,这样我就可以在我的测试中使用它。

谢谢

【问题讨论】:

  • 是的,您可以下载数据并将其添加到您的项目中。然后你可以从你的应用程序包中加载它。

标签: json swift xcode swift5 data-persistence


【解决方案1】:
  1. 确定要存储它的位置以及应命名的名称。例如,对于可以从网络重新检索的文件,我们将使用cachesDirectory

    let folder = try! FileManager.default
        .url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        .appendingPathComponent("downloads")
    

    或者,您可以使用applicationSupportDirectory(如果重新检索不切实际)或.documentsDirectory(如果您希望将文件潜在地暴露给最终用户)。但想法是一样的。

  2. 如果您还没有创建该文件夹:

    try? FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true)
    
  3. 为该文件夹中的文件创建 URL:

    let fileURL = folder.appendingPathComponent("sample.json")
    
  4. Data 保存到该文件URL:

    do {
        try data.write(to: fileURL)
    } catch {
        print(error)
    }
    

【讨论】:

  • 我在 data.write 行中收到以下错误 - 无法将“URL”类型的值转换为预期的参数类型“目标”——我之前收到了该错误,但我不能不知道为什么会这样。
  • 谢谢,我真的明白了。我将错误的类型传递给函数。
猜你喜欢
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2015-05-07
相关资源
最近更新 更多