Listing 1:Anbinden der Realm Platform // Anlegen eines Struct, dass die relevanten Adressen // der Realm-Instanz innerhalb der App bereistellt struct Constants { static let IHRE_URL_DER_REALM_INSTALLATION = "http://127.0.0.1:9080" // <- z.B. bei einer lokalen Testinstallation static let AUTH_URL = URL(string: "https://\(IHRE_URL_DER_REALM_INSTALLATION)")! static let REALM_URL = URL(string: "realms://\(IHRE_URL_DER_REALM_INSTALLATION)/IhrAppRealm")! } // Einrichten der Realm-Instanz innerhalb eines ViewController func viewDidLoad() { // Für die benutzerspezifische Synchronisierung der Daten // kann die Authentifizierung mit entsprechenden Credentials erfolgen. SyncUser.logIn(with: creds, server: Constants.AUTH_URL, onCompletion: { [weak self](user, err) in if let _ = user { } else if let error = err { } }) let syncConfig = SyncConfiguration(user: SyncUser.current!, realmURL: Constants.REALM_URL, isPartial: true) realm = try! Realm(configuration: Realm.Configuration(syncConfiguration: syncConfig)) // Nun steht eine Verbindung mit der Realm Platform zur Verfügung // und das lokale Realm innerhalb der App kann sich mit dem Realm // in der Realm Plattform abgleichen. // Objekte können wie folgt abgerufen werden - // in diesem Beispiel z.B. alle DataItems des angemeldeten Benutzers. dataitems = realm.objects(DataItem.self).filter(NSPredicate(format: "owner = '\(SyncUser.current!.identity!)'")).sorted(byKeyPath: "timestamp", ascending: false) } Listing 2:Eigene Login-Methoden #Swift // Credentials für die Verbindung zur Realm Platform let cred = SyncCredentials.usernamePassword( username: "username", password: "password", register: false) // Verbindung zur Synchronisierung SyncUser.logIn(with: cred, server: serverURL) {user, error in guard let user = user else { return DispatchQueue.main.asyncAfter(deadline: .now() + 5) { connect(completion: completion) } } var config = Realm.Configuration.defaultConfiguration // Version des Datenmodells für Migrationen config.schemaVersion = 1 config.syncConfiguration = SyncConfiguration(user: user, realmURL: syncURL) Realm.Configuration.defaultConfiguration = config DispatchQueue.main.async(execute: completion) } #Javascript Pop.prototype.connect = function("AuthenticationTokenDerRelamPlatform") { // Alternative Instantiierung des Synusers über einen // Token anstatt über Nutzername + Passwort var admin = Realm.Sync.User.adminUser(token); Realm.Sync.addListener("URL ODER IP der Relam Platform", admin, this.path, 'change', this.changeCallback); } Listing 3:Datenzugriff func addDataItem() { let item = DataItem() item.attribut = "Ihr Wert z.B. aus einem Textfeld" try! self.realm.write { self.realm.add(item) } } func updateAttributeFirItem(for item: DataItem, newValue: String) { try! self.realm.write { item.attribut = newValue } } func deleteDataItem(item: DataItem) { try! realm.write { realm.delete(item) } }