2017-04-02 64 views
0

有助於理解與Realm相關的問題。 iOS和Watch Extension有一個應用程序。我能夠連接到它們中的每一個Realm base,但是當您將信息添加到其中時 - 例如,在iOS應用程序中,它不會出現在Watch上。我如何同步顯示?帶手錶擴展功能的iOS應用領域數據庫

我在這兩種情況下使用此功能:

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

你有兩個完全分離的數據庫 - 一個在iphone上,一個在手錶上。他們不打算同步。 – abjurato

+0

事實證明,我需要使用WatchConnectivity框架才能在每個Realm數據庫中複製我的操作? –

回答

1

在watchOS 1中,watch應用程序是共享文件的共享擴展,可以訪問共享文件,截至watchOS 2,情況已不再是這樣。

watchOS 2上的應用程序與其父級iOS應用程序完全分離(至相信在父應用程序關閉時它們可以運行的點)。因此,您需要將iOS應用程序中所做的更改傳達給手錶。

您可以在WatchConnectivity框架中使用WCSession在兩個平臺之間發送數據。如果您有一個預先捆綁的Realm文件,其中包含一組初始數據,那麼應用程序最初啓動時應該能夠發送整個文件。在此之後,您只應將更改的關鍵值數據發送至手錶,以保持最新狀態。

+0

感謝您的擴展答案! 還有一個問題 - 是否可以通過消息對象如結果進行傳輸? –

+0

不客氣!我不認爲有可能通過'WCSession'直接發送'Results'對象。 'WCSession.sendMessage(message:,replyHandler:,errorHandler:)似乎暗示它只能發送字典對象。 – TiM

+0

而陣列可以轉移? –