如何将预先填充的Default.realm文件放到设备上?

时间:2014-12-17 20:19:35

标签: ios swift realm

我有一个已填充了在设备上加载应用时需要存在的数据的域文件。

我可以做些什么来将realm文件放到我的设备上进行测试?当有人从应用商店下载应用时,我该怎么做才能确保它已存在?

我正在使用Swift。

2 个答案:

答案 0 :(得分:7)

将您的数据库文件添加到Xcode项目中,即" preloaded.realm" 首次删除文件时,请确保选择添加到目标 Add to targets

然后(从迁移示例中获取)您可以执行类似这样的操作,将预加载的文件复制到默认目录。这将创建一个读/写域

// copy over old data files for migration
let defaultPath = RLMRealm.defaultRealmPath()
let defaultParentPath = defaultPath.stringByDeletingLastPathComponent

let v0Path = NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("preloaded.realm")
NSFileManager.defaultManager().removeItemAtPath(defaultPath, error: nil)
NSFileManager.defaultManager().copyItemAtPath(v0Path, toPath: defaultPath, error: nil)

以下是该常规代码https://github.com/realm/realm-cocoa/blob/master/examples/ios/swift-2.2/Migration/AppDelegate.swift

的链接

答案 1 :(得分:3)

您首先必须创建要随应用一起提供的领域文件。完成后,将其添加到应用程序的Xcode项目中并将其复制到捆绑包中(Xcode应自动执行)。

此时,应用应该能够访问捆绑的文件(您可以使用NSBundle.mainBundle().pathForResource(_:ofType:)来获取路径)。

您可以在此路径中创建只读域(请参阅RLMRealm(path:readOnly:error:)),或将其复制到Documents目录以创建读写域文件。

您应该参考我们的migration example了解有关如何执行此操作的更多详细信息。

相关问题