Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Realm = RLMRealm' has no member 'setDefaultRealmPath'

I have added the Realm.framework and RealSwift.framework to a project. and "import Realm" though I'm getting this error:

RLMRealm' has no member 'setDefaultRealmPath'

 let directory: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.it.fancypixel.Done")!
        let realmPath = (directory.path! as NSString).stringByAppendingPathComponent("db.realm")
        RLMRealm.setDefaultRealmPath(realmPath)

Any ideas I can't seem to see a solution for this anywhere being it's so new.

Thanks in advance.

like image 468
uplearned.com Avatar asked Dec 23 '15 06:12

uplearned.com


3 Answers

Realm (Both the Swift and Objective-C libraries) was just updated to version 0.97. While setDefaultRealmPath was a valid API in the past, it was subsequently deprecated, and as of 0.97, completely removed. As such, if it was working in the past, once you've updated to 0.97, it will now result in a build error.

Setting the file location of a Realm is now controlled via Realm RLMRealmConfiguration objects. To set the default path, you would now do it like this:

let directory: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.it.fancypixel.Done")!
let realmPath = (directory.path! as NSString).stringByAppendingPathComponent("db.realm")

var config = RLMRealmConfiguration.defaultConfiguration()
config.path = realmPath
RLMRealmConfiguration.setDefaultConfiguration(config)

Let me know if you need any more clarification!

like image 82
TiM Avatar answered Oct 23 '22 22:10

TiM


The new way to change the default Realm path:

let directory: URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.YOUR_BUNDLE_ID")!
    let realmPath = directory.path.appending("db.realm")
    let configuration = RLMRealmConfiguration.default()
    configuration.pathOnDisk = realmPath
    RLMRealmConfiguration.setDefault(configuration)
like image 2
pesch Avatar answered Oct 23 '22 23:10

pesch


In Swift 4 you can use this

let identifier = "group.companyName.projectName"
    var directory: URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: identifier)!


    directory.appendPathComponent("db.realm", isDirectory: true)

    let config = Realm.Configuration(
        fileURL: directory,
        schemaVersion: 1,
        migrationBlock: { migration, oldSchemaVersion in  })

    Realm.Configuration.defaultConfiguration = config
like image 1
Preeti Rani Avatar answered Oct 23 '22 22:10

Preeti Rani