【问题标题】:applicationDocumentsDirectory changes on build构建时应用程序文档目录更改
【发布时间】:2015-10-23 05:24:16
【问题描述】:

我创建了一个新的 swift 项目并勾选了“使用核心数据”框。我注意到每次在我的设备上构建时,我的数据都已从数据库中清除。跟踪代码我注意到每次我运行应用程序时,xcode 添加到应用程序委托中的核心数据的默认设置都有不同的 url:

line in app del:
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("Testo.sqlite")

first execution
file:///var/mobile/Containers/Data/Application/3EA9BE17-223E-4FA9-A8AB-E30161B39BF5/Documents/Testo.sqlite

second execution
file:///var/mobile/Containers/Data/Application/FA0F72CF-B6BD-4ADA-AE19-D71A3189DAA0/Documents/Testo.sqlite

third execution
file:///var/mobile/Containers/Data/Application/BD20A689-0D02-4353-BB1E-14857496D2E9/Documents/Testo.sqlite

我猜这就是我的数据不断消失的原因。有没有办法防止这种情况,所以看起来我的数据不会被清除。

【问题讨论】:

标签: ios xcode swift


【解决方案1】:

如您所见,NSDocumentDirectory 在每次构建时都会发生变化。但是,文档目录中的文件会在每次运行之前复制到“新”位置。所以我不认为这就是你的数据不断消失的原因。您是否尝试过查看这些目录以查看 Testo.sqlite 是否真的存在?如果有,它是否包含任何数据?

旁注:

Apple 不建议您将数据库文件存储在 NSDocumentDirectory 中。相反,将您的 SQLite 存储设置在应用程序库中:

var appDir = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)

为了将来参考,这里有一些来自 Apple 的关于不同目录的文档:

iOS Standard Directories: Where Files Reside

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多