2017-04-02 8 views
0

レルムに関連する問題を理解するのに役立ちます。 iOSとWatch Extensionのアプリケーションがあります。 Realmベースにそれぞれ接続することはできましたが、iOSアプリケーションなどで情報を追加すると、ウォッチには表示されません。ディスプレイをどのように同期させることができますか?Watch拡張機能付きiOSアプリのRealmデータベース

私は両方のケースで、この機能を使用します。

func setDefaultRealmPath() 
{ 
let directory: URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.gurman.watchTestApp")! 

let fileRealmURL = directory.appendingPathComponent("db.realm") 
realm = try! Realm(fileURL: fileRealmURL) 

var config = Realm.Configuration.defaultConfiguration 
config.fileURL = fileRealmURL 

Realm.Configuration.defaultConfiguration = config 

print("file url: \(realm.configuration.fileURL!)") 
} 

ヘルプしてください!

+0

任意のソリューション?? –

+0

あなたは完全に分離された2つのデータベースを持っています.1つはiPhoneと1つは時計です。それらは同期するつもりはありません。 – abjurato

+0

各Realmデータベースで自分のアクションを複製するには、WatchConnectivityフレームワークを使用する必要があります。 –

答えて

1

watchOS 1では時計アプリは親アプリケーションの共有拡張であり、watchOS 2のように共有ファイルにアクセスすることはできなくなりました。

watchOS 2のアプリは親のiOSアプリとは完全に別です(親アプリが閉じている間に機能すると思うところまで)。そのため、iOSアプリの変更を時計に伝える必要があります。

WatchConnectivityフレームワークでWCSessionを使用すると、2つのプラットフォーム間でデータを送信できます。あらかじめバンドルされたRealmファイルに初期データセットが含まれている場合は、アプリが最初に起動したときにファイル全体を送信できるはずです。その後は、変更されたもののKey-Valueデータを時計に送信するだけで、最新の状態に保つようにしてください。

+0

拡張された答えをありがとう! もう1つ質問 - 結果のようなメッセージオブジェクトを介して転送できるかどうか? –

+0

あなたは大歓迎です! 'WCSession'の上に' Results'オブジェクトを直接送ることはできないと思います。 'WCSession.sendMessage(message:、replyHandler:、errorHandler:)'は、それがディクショナリオブジェクトを送ることしかできないことを暗示しているようです。 – TiM

+0

アレイは転送できますか? –

関連する問題