Swift Realm,以正确的方式加载预先填充的数据库?

我对ios开发很新.

我按照这个migration example来使用预先填充的数据库并稍微更改代码

这是我在AppDelegate上使用的最终代码 – >功能应用程序

let defaultPath = Realm.Configuration.defaultConfiguration.path!
    let path = NSBundle.mainBundle().pathForResource("default",ofType: "realm")

    if let bundledpath = path {

        print("use pre-populated database")
        do {
            try NSFileManager.defaultManager().removeItemAtPath(defaultPath)
            try NSFileManager.defaultManager().copyItemAtPath(bundledpath,toPath: defaultPath)

        } catch {
            print("remove")
            print(error)
        }
    }

我在一个真实的设备中测试它.

它可以工作,但根据代码逻辑,它将始终重置为预先填充的数据库.这已经过验证:应用程序重启后数据会重置.

我尝试了moveItemAtPath而不是copyItemAtPath.权限错误

我试图在复制后删除预先填充的数据库文件.权限错误

我尝试使用预先填充的数据库文件作为领域认配置路径.也发生错误.

是的,你的逻辑是正确的.每次执行此代码时,Documents目录中的认Realm文件都将被删除,并替换为app bundle附带的静态副本.这是通过Realm示例代码中的设计完成的,以便在每次启动应用程序时演示迁移过程.

如果您只希望这种情况发生一次,最简单的方法是事先检查Realm文件是否已存在于认路径中,然后仅在尚未存在时才执行复制.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...