我正在尝试将 Realm 文件与我的应用捆绑在一起。我按照步骤1-5进行了操作,但是步骤6我不清楚。它说将文件复制回文档文件夹,特别是如果它将被用户编辑。
假设,复制语句进入 AppDelegate(类似于示例迁移代码中的做法),并且文件被复制,下一次启动应用程序时会发生什么?它会再次复制文件并覆盖它吗?我错过了什么吗?
我是否需要在发布应用程序之前运行一次,然后从应用程序委托(delegate)中删除代码?
编辑:这个问题是关于 realm-swift
最佳答案
如果您将 Realm 文件与您的应用程序捆绑在一起,它将存储在您的应用程序包中的 Resources 目录中,该目录不可写(由于代码签名)。因此,如果您希望您的用户能够更改此数据,您必须将此文件复制到某个具有写访问权限的目录。应用程序的 Documents 目录似乎是一个不错的选择,它也是默认 Realm.Configuration
的默认目录。
如果它是您应用的初始数据并且您不想在每次应用启动时都覆盖它,您可以简单地检查目标文件是否存在并且在这种情况下不复制您的初始数据库。
你可以这样做:
let initialURL = NSBundle.mainBundle().URLForResource("initial", withExtension: "realm")!
let defaultURL = Realm.Configuration.defaultConfiguration.fileURL!
if (!defaultURL.checkResourceIsReachableAndReturnError(nil)) {
do {
try NSFileManager.defaultManager().copyItemAtURL(initialURL, toURL: defaultURL)
} catch {
// Handle error here
}
}
let realm = try! Realm()
关于swift - 将 Realm 与 App 部分捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001476/