【问题标题】:Objective c: Where to save the files in folder?目标c:将文件保存在文件夹中的什么位置?
【发布时间】:2015-05-20 06:11:40
【问题描述】:

我有一些文件需要保存以存储 player.json 等数据。

我现在正在使用

documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

但是,它保存在 iOS 中的 Documents 目录中,并且可以从 iTunes 中访问。加密文件也将非常消耗 RAM,并且在一些早期的设备 (iOS 5c) 上,它会减慢应用程序的速度。所以我在考虑移动到普通用户无法访问的文件夹。

这里有哪些选项?我应该在 iOS 中为这些文件创建一个文件夹吗?其他人可以访问吗?

【问题讨论】:

  • 保存在tmp文件夹中,用户将无法从iTunes访问此文件夹。
  • 我的问题是你是否将它保存在 tmp 文件夹中。什么情况下文件会被删除?因为我怕万一出事了 tmp 文件夹里的文件会被清除掉。
  • 你能完全禁用你的应用程序的 iTunes 文件共享吗?
  • 哇,@PartiallyFinite 这就是我正在寻找的答案。你能在目标 C 中做到这一点吗?
  • 尝试保存到缓存目录。如果只供内部程序使用。这样即使您尝试,它也不会成为 iTunes 文件共享的一部分。

标签: ios objective-c


【解决方案1】:

您可以通过将此键添加到 Xcode 中的 Info.plist 文件来完全禁用 iTunes 文件共享(单击项目,在左侧窗格中选择正确的目标,然后转到 Info 选项卡在顶部标签栏中):

那么在 iTunes 中查看您的应用时,您的应用将完全看不到任何文件。

【讨论】:

    【解决方案2】:

    与Documents目录类似,有Library文件夹,用户无法通过itunes访问

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryDirectory = paths[0];
    

    【讨论】:

    • 如果我没记错的话,NSLibraryDirectory 中的数据可能会不时丢失,例如在某些主要的 iOS 更新期间,Apple 会擦除设备的库目录(如果我没记错的话)。
    【解决方案3】:

    阅读 iOS 数据存储指南 https://developer.apple.com/icloud/documentation/data-storage/index.html 如果您不希望您的文件包含在 iTunes/iCloud 备份中,请为它们设置“不备份”标志或将其移动到 tmp 文件夹中。 设置此标志还可以确保您的文件永远不会被自动清除 => 您始终可以访问它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多