Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to migrate a realm database to an app group?

Tags:

ios

swift

realm

Really excited about the recent addition of sharing Realm data between apps and extensions. The documentation details how to set the default realm to the app group directory, I've got that working.

Here's what I'm stuck on -- what's the best way to transfer the old database to the new location in the app group?

like image 285
Whoa Avatar asked May 02 '15 00:05

Whoa


1 Answers

Based on @segiddins comment, I decided to go with moving the old database to the app group using NSFileManager:

    let fileManager = NSFileManager.defaultManager()

    //Cache original realm path (documents directory)
    let originalDefaultRealmPath = RLMRealm.defaultRealmPath()

    //Generate new realm path based on app group 
    let appGroupURL: NSURL = fileManager.containerURLForSecurityApplicationGroupIdentifier("group.AppGroup")!
    let realmPath = appGroupURL.path!.stringByAppendingPathComponent("default.realm")

    //Moves the realm to the new location if it hasn't been done previously
    if (fileManager.fileExistsAtPath(originalDefaultRealmPath) && !fileManager.fileExistsAtPath(realmPath)) {

        var error: NSError?
        fileManager.moveItemAtPath(originalDefaultRealmPath, toPath: realmPath, error: &error)

        if (error != nil) {
            println(error)
        }
    }

    //Set the realm path to the new directory
    RLMRealm.setDefaultRealmPath(realmPath)
like image 84
Whoa Avatar answered Oct 23 '22 08:10

Whoa