Apple WatchにRealmのデータを転送できない
iOS側のRealmデータをApple Watchにデータ転送したいのですが、うまくいきません。
環境は以下の通りです。
- Xcode 8.2.1
- DevelopmentTarget:iOS 10.0 / watchOS 3.0
- Realm / RealmSwift (2.1.2)
以下のリンクに記載されているような形式で実行してみましたが、iOS側とApple Watch側とでは取得するURLが異なってしまい、Realmのデータが共有できないようでした。
https://stackoverflow.com/questions/39644579/share-realm-data-with-watchos
https://realm.io/news/tutorial-sharing-data-between-watchkit-and-your-app/
iOS側 / watchOS側
let directory : URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: jp.co.example.app)!
let realmPath : URL = directory.appendingPathComponent("default.realm")
var config = Realm.Configuration()
config.fileURL = realmPath
let realm = try! Realm(configuration: config)
調べてみると、以下の様な方法がありました。
http://qiita.com/hsylife/items/986a47a173a4b8ad5672
Realmのデータが置いてある箇所のデータをWCSessionで送るというものでした。
iOS側
let directory : URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: jp.co.example.app)!
let realmPath : URL = directory.appendingPathComponent("default.realm")
WCSession.default().transferFile(realmPath, metadata: nil)
watchOS側
func session(_ session: WCSession, didReceive file: WCSessionFile) {
var config = Realm.Configuration()
config.fileURL = file.fileURL
let realm = try! Realm(configuration: config)
}
しかし、上記の場合だとiOS側からのURLが正常に送られていない(?)のか、Realmの取得するところでエラーとなってしまいます。
(なぜかシミュレーターでは落ちずに正常に取得・Realmデータ共有出来ますが、実機だとエラーとなります)
いろいろと調べましたが、他の方法が見当たらずに困っています。
わかる方がいらっしゃいましたら、ご教授いただけますでしょうか。
よろしくお願いいたします。