2016-12-01 2 views
1

Ich habe einen Realm Objekt Server auf AWS (RHAT) eingerichtet und es scheint gut zu funktionieren. Ich kann auf das Dashboard schauen, das mir sagt, wie viele Verbindungen und wie viele Realms auf Port 9080 geöffnet sind. Mein Code funktioniert gut auf dem Gerät, Updates werden auf dem Gerätebereich ausgeführt. Aber ich sehe nichts, was sich im ROS-Bereich ändert. Ich bekomme vielleicht etwas sehr grundlegendes falsches, aber ich kann nicht sagen was.Realm Object Server erstellt DB und ROS aber nicht synchronisiert

func setupRealm() { 
    // Authenticating the User 
    let username = "exampleuser" 
    let password = "examplepassword" 
    SyncUser.logInWithCredentials(SyncCredentials.usernamePassword(username, password: password), authServerURL: NSURL(string: "http://example.com:9080")!, onCompletion: 
    { user, error in 
     if let user = user { 
      // Opening a remote Realm 
      let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")! 
      let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL)) 
      let realm = try! Realm(configuration: config) 
      // Any changes made to this Realm will be synced across all devices! 
     } else if let error = error { 
      // handle error 
     } 
    }) 
} 

Ich rufe setupRealm() von ViewDidLoad.

Meine Entwickler müssen in der Lage sein, die Änderungen im ROS-Realm zu sehen, um sicherzustellen, dass alles korrekt funktioniert, aber es gibt nur den Realm für einzelne Benutzer, die Tabellenstruktur ist fehlerfrei, null Daten.

Ich überprüfte die Protokolldateien auf dem Server und nichts fiel auf.

Matt

+1

dies passierte mir vor, wenn die Benutzernamen im Format einer E-Mail-Adresse nicht – EpicPandaForce

+0

In meinem Code in der Post und ich habe den tatsächlichen Benutzernamen mit dem Beispiel ersetzt. Mein tatsächlicher Benutzername ist eine E-Mail-Adresse. War das die einzige Veränderung, die du gemacht hast? –

+0

yeah, anstelle von 'kecske' habe ich' kecske @ xyz.com' und dann hat es magisch funktioniert – EpicPandaForce

Antwort

2

Sie müssen sicherstellen, dass Sie immer noch mit Bezug auf die jeweiligen Realm (und seiner Sync-Konfiguration), wenn Ihr Schreiben zu tun. Wenn Sie nach dieser Anmeldung versucht haben, eine Schreiboperation auf let realm = try! Realm() auszuführen, verweisen Sie immer noch auf Ihren Standardbereich, der nicht synchronisiert ist.

Wenn Sie Ihre gesamte App synchronisiert zu machen, können Sie diese besondere Configuration als Standard-Realm eins gesetzt:

if let user = user { 
    // Opening a remote Realm 
    let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")! 
    let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL)) 
    Realm.Configuration.defaultConfiguration = configuration 
    // All calls to `Realm()` will now use this configuration 
} 

Ansonsten können Sie immer nur die Konfiguration erzeugen, wenn Sie es brauchen (oder eine globale haben Konstantenklasse, die es für Sie verwalten kann).

let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")! 
let configuration = Realm.Configuration() 
configuration.syncConfiguration = SyncConfiguration(user: SyncUser.current, realmURL: realmURL)) 
let realm = try! Realm(configuration: configuration) 
+0

TiM, danke. Bin gerade auf einem Flug, der gerade jetzt landen soll. Ich werde heute Abend versuchen, die Augmentationen zu machen und Ihre Antwort zu akzeptieren, sobald ich bestätige, dass es funktioniert. Klingt genau wie das Basisstück, das ich vermisst habe. Vielen Dank. –

+1

TiM wir arbeiten immer noch daran, alles zum Laufen zu bringen, aber ich kann mit Ihren Änderungen in der Konsole sehen, dass wir das ROS erreichen und es synchronisiert. Kann es nicht sehen, indem ich mich mit dem ROS verbinde, aber ich denke, das ist ein separates Problem. Habe als richtige Antwort gecheckt. Danke. –

+0

danke @ TiM. Es klappt. – Jamil

Verwandte Themen