我需要從Apple Watch和iPhone顯示和修改我的數據結構。使用Swift 3和Realm同步Apple Watch和iPhone
數據庫:
我現在使用的一個簡單的領域結構,其中我有一個對象,並能容納大量A的一個對象B。
因此在iPhone上,用戶可以創建一個B並添加A並查看當然所有A和B的。
我想蘋果的手錶顯示當前B的所有A和給用戶增加新的A的他們目前B.
方式的機會,我試圖做到這一點:
我想將iPhone中的洞Realm文件移動到手錶或其他方式。 (這是從網上小費)
iPhone代碼:
override func viewDidLoad() {
super.viewDidLoad()
if WCSession.isSupported() { //makes sure it's not an iPad or iPod
let watchSession = WCSession.default()
watchSession.delegate = self
watchSession.activate()
transferRealmFile()
if watchSession.isWatchAppInstalled {
do {
try watchSession.updateApplicationContext(["foo": "bar"])
} catch let error as NSError {
print(error.description)
}
}
}
}
func transferRealmFile(){
if let path = Realm.Configuration().fileURL {
WCSession.default().transferFile(path, metadata: nil)
}
}
WathcKit擴展:
func session(_ session: WCSession, didReceive file: WCSessionFile) {
//set the recieved file to default Realm file
var config = Realm.Configuration()
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
let realmURL = documentsDirectory.appendingPathComponent("data.realm")
if FileManager.default.fileExists(atPath: realmURL.path){
try! FileManager.default.removeItem(at: realmURL)
}
try! FileManager.default.copyItem(at: file.fileURL, to: realmURL)
config.fileURL = realmURL
Realm.Configuration.defaultConfiguration = config
}
然後我打電話transferRealmFile()每次我寫境界時間。這工作,但我解決不了這個問題:
問題:
- 如果只watchKit應用程序啓動它不工作。
- Apple Watch對iPhone的操作方式不一樣。 (我想我需要改變didRecived代碼,但我不知道是什麼)
問:
你知道誰給解決這個問題2或者你也許知道更好的方式來處理這種情況,或將我們在iPhone之間進行交互的方式和WathcOS 3中的Watch更改?