【问题标题】:How to hide SQLite db files so they are not seen in iTunes file sharing如何隐藏 SQLite db 文件,以便在 iTunes 文件共享中看不到它们
【发布时间】:2016-09-25 22:23:22
【问题描述】:

我在我的应用程序上启用了文件共享,因此,当您在 iTunes 中查看文档文件夹时,Core Data sqlite 文件就在那里等待用户摆弄。

我发现了一些关于此的讨论,但令人惊讶的是,似乎没有人解决我的担忧。

有人说将它们“移动”到库文件夹 - 在自定义子目录中,另一种说只是重命名文件,每个文件都带有句点。

这两个选项听起来都不错,但这些都是必不可少的操作系统文件! 所以我的第一个问题是,如果你做这些事情中的任何一个(使用 NSFileManager.defaultManager() - 我想),应用程序会在之后自动找到它们吗? ...或者您是否有特定的“方式”来处理它们(其中任何一个)...以便应用程序在之后找到它们?

任何回复,如果您可以演示使用 Swift 而不是 Objective C,将不胜感激!谢谢,:)

【问题讨论】:

  • 将它们保存在库文件夹中。该应用程序只能通过 iTunes 访问 Document 文件夹中的文件。
  • 谢谢,但正如我所问,如果我只是移动这些文件,应用程序会自动找到它们而不进行任何其他设置吗? ...你什么时候移动它们;首次发布时只有一次?
  • 应用程序不会自行找到它们。你告诉它在哪里可以找到它们。 NSLibraryDirectory 指向库。 NSDocumentDirectory 指向文档文件夹。
  • 认真的吗?我知道文档指针的名称;但问题是关于 - 当我移动文件时,我该怎么做才能让应用程序找到文件?你什么时候做这个?仅在首次启动期间或超时启动应用程序时...?不知道的请不要回答
  • 好吧,我不会回答你的问题。但是让我告诉你一些事情,愚蠢的。我在 Mac App Store 和 App Store 中有几十个应用程序。他们都使用 SQLite 来保存和检索用户设置。

标签: swift sqlite file-sharing nsdocumentdirectory nslibrarydirectory


【解决方案1】:

这将是 Swift 3 / 4 的语法:

    let library = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0] as NSURL
    let url = library.appendingPathComponent("MyAppName.sqlite")

【讨论】:

    【解决方案2】:

    想通了: 对于任何想知道同样事情的人(我见过很多人这样做),

    在我的应用委托中 > 在“persistentStoreCoordinator”惰性变量中, 我更改了以下代码行:

    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyAppName.sqlite")
    

    以下两行代码:

    let library = NSFileManager.defaultManager().URLsForDirectory(.LibraryDirectory, inDomains: .UserDomainMask)[0] as NSURL
    let url = libary.URLByAppendingPathComponent("MyAppName.sqlite")
    

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 2016-03-24
      • 2011-05-31
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      相关资源
      最近更新 更多