2015-12-23 3 views
5

Realm.frameworkとRealSwift.frameworkをプロジェクトに追加しました。そして「インポート・レルムは」私はこのエラーになっていますけれども:Realm = RLMRealm 'にはメンバー' setDefaultRealmPath 'がありません

RLMRealm setDefaultRealmPath 『私はどこにでもいる、このためのソリューションを見ることができないよう

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

任意のアイデア」はメンバーを持っていない』をので、新しいのです。

ありがとうございます。

答えて

9

Realm(SwiftとObjective-Cライブラリの両方)はバージョン0.97に更新されました。以前はsetDefaultRealmPathが有効なAPIでしたが、その後廃止され、0.97以降は完全に削除されました。したがって、過去に動作していた場合は、0.97に更新するとビルドエラーになります。

レルムのファイル位置の設定は、レルムRLMRealmConfigurationオブジェクトで制御されるようになりました。デフォルトのパスを設定するには、次のようにそれを行うだろう:

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) 

あなたが任意のより多くの明確化が必要な場合は、私に教えてください!

+0

これが働いている[OK]を素晴らしいです。ありがとうございました!万が一、デバイス間で同期がどのように行われているかを理解できるように助けてください。私はrealmToken = RLMRealm.defaultRealm()を追加しました。新しい領域オブジェクトを別のデバイスに追加するときに、他のデバイスの変更を登録していますが、addNotificationBlock {note、realm in self.reloadEntries() } –

+0

恐ろしい!聞いてうれしい!いいえ、レルムの通知ブロックはデバイス間で同期しません。 Realmオブジェクトをバックグラウンドスレッド上で変更しているときに使用され、アプリ内の別の場所で通知されたい場合に使用されます。しかし、以前のGitHubページではデバイス間での同期が行われていました。 :) – TiM

1

デフォルトのレルムのパスを変更するための新しい方法は:

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) 
関連する問題