2017-04-02 7 views
0

렐름과 관련된 문제를 이해하는 데 도움이됩니다. iOS 및 Watch Extension에 대한 애플리케이션이 있습니다. Realm base에 각각 연결할 수 있었지만 정보를 하나에 추가하면 (예 : iOS 응용 프로그램에서) Watch에 표시되지 않습니다. 디스플레이를 어떻게 동기화 할 수 있습니까?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

아이폰과 시계 중 하나에 두 개의 완전히 분리 된 데이터베이스가 있습니다. 동기화 할 의도가 없습니다. – abjurato

+0

각 Realm 데이터베이스에서 내 작업을 복제하려면 WatchConnectivity 프레임 워크를 사용해야합니다. –

답변

1

watchOS 1에서 시계 응용 프로그램은 watchOS 2와 같이 공유 파일에 대한 액세스 권한이있는 상위 응용 프로그램의 공유 확장 프로그램 이었지만 더 이상 그렇지 않습니다.

watchOS 2의 앱은 상위 iOS 앱과 완전히 별개입니다 (부모 앱이 종료 된 상태에서 기능을 수행 할 수 있다고 판단되는 지점까지). 따라서 iOS 앱의 변경 사항을 시계에 전달해야합니다.

WatchConnectivity 프레임 워크에서 WCSession을 사용하여 두 플랫폼간에 데이터를 보낼 수 있습니다. 초기 데이터 세트가 포함 된 사전 번들 Realm 파일이있는 경우 앱이 처음 시작될 때 전체 파일을 보낼 수 있어야합니다. 그 후에는 변경된 항목의 키 - 값 데이터를 시계로 전송하여 최신 상태로 유지해야합니다.

+0

확장 된 답변 주셔서 감사합니다! 하나 더 질문 - 결과 같은 메시지 개체를 통해 전송할 수 있는지 여부? –

+0

당신을 진심으로 환영합니다! 나는'WCSession'을 통해'Results' 객체를 직접 보낼 수 있다고 생각하지 않습니다. 'WCSession.sendMessage (message :, replyHandler :, errorHandler :)'는 사전 객체를 보낼 수있는 것만을 의미합니다. – TiM

+0

배열을 전송할 수 있습니까? –