Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

Realm Mobile-Datenbank für iOS

by
Read Time:12 minsLanguages:

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Einführung

In diesem Tutorial zeige ich Ihnen, wie Sie eine leistungsstarke und dennoch elegante geräteinterne Datenbanklösung für Ihre iOS-Apps verwenden: Realm Mobile Database. Als Alternative zu Apple Core Data oder SQLite mit objektrelationalem Mapping (ORM) bietet Realm Mobile Database Entwicklern eine einfachere und natürlichere Möglichkeit, Daten zu speichern und abzufragen.

Was ist Realm Mobile Database?

Als echte Objektdatenbank in Rechnung gestellt, unterscheidet sich Realm von anderen ähnlichen Bibliotheken, indem es Datenobjekte als Live-Objekte behandelt, d. h. Objekte werden automatisch aktualisiert. Sie reagieren auf Änderungen und sind leicht zu bestehen. Noch besser, Sie haben nicht die steile Lernkurve wie bei Core Data oder SQLite-Skripting. Stattdessen können Sie wirklich objektorientiert arbeiten. Die Realm Mobile Database ist seit 2016 ebenfalls Open Source und steht Entwicklern kostenlos zur Verfügung.

Neben Realm Mobile Database bietet das Unternehmen auch Realm Mobile Platform, sein Flaggschiff-PAAS, um Realm Mobile Database mit einer serverseitigen Lösung zu ergänzen.

Realm Mobile Platform erweitert diesen Kern um Echtzeit-Datensynchronisierung und Ereignisbehandlung auf der Serverseite, die alle nahtlos mit den Apps verbunden sind. Entwickler verwenden die Plattform, um Apps mit leistungsstarken Funktionen wie Messaging, Zusammenarbeit und Offline-First-Funktionen zu erstellen. Die Plattform ist auch ideal für die Mobilisierung vorhandener APIs, sodass auf einfache Weise reaktionsschnelle und ansprechende Apps erstellt werden können, die mit älteren Systemen und Diensten verbunden sind. (realm.io)

So arbeitet Realm Mobile Platform serverseitig auf die gleiche nahtlose Weise wie Realm Mobile Database, bietet eine automatische Datensynchronisation und Ereignisbehandlung zwischen Client und Server und abstrahiert dabei die Komplexität, die bei der Datensynchronisation entsteht. Realm Mobile Platform würde den Rahmen dieses Tutorials sprengen, aber ich werde in einem zukünftigen Beitrag darauf zurückkommen.

Warum Realm Mobile-Datenbank?

Realm Mobile Database erspart Entwicklern nicht nur die Kopfschmerzen und die steile Lernkurve von Core Data, sondern bietet auch sofort einsatzbereite entscheidende Vorteile.

Leistung & Fadensicherheit

In Bezug auf die Leistung führt Realm Mobile Database nachweislich Abfragen aus und synchronisiert Objekte deutlich schneller als Core Data, und der gleichzeitige Zugriff auf die Daten ist kein Problem. Das heißt, mehrere Quellen können auf dasselbe Objekt zugreifen, ohne Sperren verwalten oder Dateninkonsistenzen befürchten zu müssen.

Verschlüsselung

Realm Mobile Database bietet eigene Verschlüsselungsdienste zum Schutz von Datenbanken auf der Festplatte mit AES-256+SHA2 durch 64-Byte-Verschlüsselung.

Dadurch werden alle auf der Festplatte gespeicherten Daten bei Bedarf transparent mit AES-256 verschlüsselt und entschlüsselt und mit einem SHA-2-HMAC überprüft. Derselbe Verschlüsselungsschlüssel muss jedes Mal angegeben werden, wenn Sie eine Realm-Instanz beziehen.

Plattformübergreifend

Im Gegensatz zu Core Data ist Realm Mobile Database wirklich plattformübergreifend und unterstützt iOS, Android, JavaScript-Web-Apps und Xamarin.

Reaktive Natur

Aufgrund der Funktionsweise der Live-Objekte können Sie Ihre Benutzeroberflächenelemente mit den Datenmodellen verbinden und Ihre Benutzeroberfläche wird reaktiv aktualisiert, wenn sich die Daten ändern! Es ist kein komplizierter Synchronisationscode oder Verdrahtungslogik erforderlich, wie dies bei Core Data der Fall wäre.

In Verbindung mit der Realm Mobile Platform und dem Realm Object Server erhalten Entwickler den zusätzlichen Vorteil, ihre Daten mit der Cloud zu synchronisieren, indem sie einfach die Realm Object URL festlegen.

Selbst wenn Sie Realm Mobile Platform verwenden, müssen Sie sich keine Sorgen um unterbrochene Verbindungen machen, da Realm über integrierte Offline-Funktionen verfügt und alle Datenänderungen in eine Warteschlange stellt, um sie an den Server zu senden.

Kunden

Realm hat zahlreiche namhafte Kunden, die die Realm Mobile Database offen übernommen haben, darunter Netflix und Starbucks.

Alternativen zu Realm Mobile Database

Natürlich ist Realm Mobile Database nicht die einzige App-Speicherlösung. Ich habe bereits Apples eigene Core Data erwähnt, und obwohl es von Natur aus komplizierter zu erlernen ist, bedeutet die Tatsache, dass es zu Apple gehört, dass es für viele iOS-Entwickler die De-facto-Datenbanklösung sein wird und weiterhin eine große Community von Entwicklern und unterstützendes Material.

Eine Lösung, die der Realm Mobile Database etwas ähnelt, ist die Firebase von Google – obwohl dies eine kombinierte clientseitige und serverseitige Lösung ist. Firebase ist ähnlich einfach zu verwenden und der Einstieg ist kostenlos, aber die Kosten skalieren mit Ihrer Nutzung. Ein Nachteil von Firebase besteht darin, dass Sie eng an ihre Plattform gekoppelt sind, während Sie bei Realm Ihr eigenes Back-End verwenden können – oder gar kein Back-End!

Deine erste Realm-App

Angenommenes Wissen

In diesem Tutorial wird davon ausgegangen, dass Sie über Grundkenntnisse in Swift verfügen, es sind jedoch keine Core Data oder vorherige Datenbankkenntnisse erforderlich.

Neben Realm werden wir die folgenden Teile von iOS verwenden:

  • UIKit: um unsere Daten visuell zu demonstrieren
  • CocoaPods: eine Abhängigkeitsbibliothek eines Drittanbieters, die verwendet wird, um die Realm Mobile Database zu installieren

Ziele dieses Tutorials

Am Ende dieses Tutorials haben Sie eine einfache To-Do-App entwickelt, die in Swift geschrieben wurde und die Realm Mobile Database verwendet, um Daten lokal beizubehalten. Du wirst eine voll funktionsfähige Realm-betriebene To-Do-App erstellen und nebenbei die folgenden Konzepte lernen:

  1. Einrichten der Realm-Bibliothek in einem neuen Projekt über CocoaPods
  2. Einrichten des App Delegate zum Importieren der Realm Library
  3. Erstellen der "Live-Objekt"-Modellobjekte
  4. Erstellen der View-Controller und des Storyboards in der App-Benutzeroberfläche
  5. Verbinden des Datenmodells mit den View-Controllern und Views

Sie können den vollständigen Quellcode aus dem Tutorial GitHub-Repository herunterladen.

Das Projekt einrichten

Okay, fangen wir an, unsere Realm-App zu erstellen: RealmDo. Wir werden ein neues Xcode-Projekt erstellen, also fahren Sie fort und erstellen Sie eine Master-Detail-Anwendung.

Create a new projectCreate a new projectCreate a new project

Wenn Sie CocoaPods noch nicht auf Ihrem Computer installiert haben, müssen Sie dies jetzt tun. Springen Sie also in das Terminal und geben Sie Folgendes ein:

$ sudo gem install cocoapods

Sie sollten dann eine Bestätigung erhalten, dass Cocoapods tatsächlich installiert ist. Navigieren Sie, während Sie sich noch im Terminal befinden, zu dem gerade erstellten Xcode-Projekt und geben Sie Folgendes ein, um eine neue Poddatei zu initialisieren:

$ pod init

Sie sollten eine neue Datei mit dem Namen Podfile im Stammverzeichnis Ihres Projekts sehen. Diese Datei enthält im Wesentlichen die Bibliotheken, die wir in unserem Projekt verwenden möchten. Weitere Informationen zur Funktionsweise von Podfiles finden Sie in der offiziellen CocoaPods-Dokumentation.

Als nächstes müssen wir die Cocoapod-Bibliothek für Realm hinzufügen, also öffnen Sie die Poddatei in einem Texteditor und fügen Sie Folgendes unter #Pods for RealmDo hinzu:

Speichern Sie die Datei, beenden Sie sie und geben Sie Folgendes ein:pod install

Nachdem CocoaPods die Installation der Bibliothek abgeschlossen hat, werden wir aufgefordert, unser Xcode-Projekt zu schließen und den Arbeitsbereich zu öffnen. Tun Sie das, und wir sind bereit, mit der Codierung fortzufahren. Wir beginnen mit dem AppDelegate.

Richten Sie den App-Delegierten ein, um die Realm-Bibliothek zu importieren

In unserem AppDelegate werden wir die Realm-Bibliothek importieren, also fügen Sie der Datei AppDelegate.swift Folgendes hinzu:

Lassen Sie die Klasse unverändert, damit wir uns auf das Modellobjekt konzentrieren können.

Live-Objektmodelle

Die Definition von Modellen in Realm ist kinderleicht; Sie erstellen einfach eine logische Modellklasse. In unserem Projekt werden wir Erinnerungen speichern. Erstellen wir also eine Klasse namens Reminder.swift mit dem folgenden Code:

Für dieses Tutorial benötigen wir nur dieses Reminder-Modell, also sind wir alle fertig! So einfach ist das und die Instanziierung eines Modells ist genauso einfach, wie wir später herausfinden werden.

Einrichten der Ansichtscontroller und des Storyboards

Jetzt konzentrieren wir uns auf die View-Controller, aber bevor wir zur MasterViewController.swift-Klasse gehen, öffnen wir Main.storyboard und fügen oben rechts eine Leiste namens Add hinzu, wie unten gezeigt:

The app main storyboardThe app main storyboardThe app main storyboard

Das Projekt wurde von Xcode initialisiert, wobei die Datenquelle und der Delegat mit dem View-Controller verbunden waren. Wir müssen also nur die soeben erstellte Schaltfläche als IBOutlet zum View-Controller hinzufügen. Halten Sie die Schaltfläche gedrückt und ziehen Sie sie im geteilten Ansichtsmodus auf den Ansichtscontroller, um den Link zu generieren.

Link the button to the view controllerLink the button to the view controllerLink the button to the view controller

Realm initialisieren

Nun gehen wir zur Datei MasterViewController.swift über und deklarieren die Variablen, die wir benötigen werden, die in etwa wie folgt aussehen sollten:

Zuerst deklarieren wir in Zeile (1) die Realm-Variable, die wir referenzieren, um zu unserem Datenspeicher zu gelangen. Dann laden wir die remindersList faul und rufen die Realm-Objekte auf, um eine Liste aller Reminder-Objekte zu erhalten. Schließlich instanziieren wir die Realm-Variable, die wir zu Beginn deklariert haben. Bisher nichts zu kompliziert!

Einrichten des View-Delegaten und der Datenquelle

Als Nächstes richten wir unsere tableView-Delegaten- und Datenquellenmethoden wie folgt ein:

In Zeile (4) erhalten wir eine Zählung der Liste der Objekte in der remindersList, die die Anzahl der Zeilen in unserer TableView mit einem Abschnitt festlegt.

Anschließend erhalten wir für jede Zelle die Eigenschaft des Reminder-Live-Objekts, um die Beschriftung festzulegen und zu kennzeichnen, ob das Element als erledigt markiert ist oder nicht.

Schreiben von Änderungen in die Datenbank

Wir möchten, dass unsere Benutzer in der Lage sind, ein Element als erledigt (und nicht erledigt) umzuschalten, was wir durch Ändern der Farbe des Etiketts anzeigen. Wir möchten auch die Tabellenansicht bearbeitbar machen (Benutzer können Zellen durch Wischen von rechts nach links entfernen), was wir durch Hinzufügen des folgenden Codes erreichen:

In Zeile (6) schreiben wir zum ersten Mal in unsere Datenbank zurück, was Sie einfach in einem self.realm.write-Block tun. Beachten Sie, dass Sie mit einem Instanzobjekt nur seinen Wert festlegen müssen, mehr nicht. In diesem Fall schalten wir den Fertigwert um, indem wir item.done = !item.done ausführen.

Zeile (7) ist unser zweites Beispiel für das Zurückschreiben in unsere Datenbank: Wir löschen ein Objekt aus der Datenbank, indem wir einfach das Instanzobjekt löschen.

Hinzufügen neuer Objekte

Wir machen große Fortschritte und sind fast fertig! Wir können jetzt unsere Erinnerungen laden, bearbeiten und löschen, aber uns fehlt eine wichtige Aktion: das Hinzufügen einer neuen Erinnerung. Um dies zu implementieren, erstellen Sie eine neue @IBAction-Methode und verbinden Sie die Symbolleistenschaltfläche Ihres Storyboards mit der Methode.

Wir werden in unserem Beispiel einen einfachen AlertViewController erstellen, aber als separate Übung versuchen Sie, die App zu verfeinern, indem Sie diese stattdessen auf einen neuen Ansichtscontroller aktualisieren.

Fahren Sie vorerst fort und fügen Sie den folgenden Code hinzu:

In Zeile (8) erstellen wir eine neue Erinnerungsinstanz und legen ihre Eigenschaften fest. Dann fügen wir in Zeile (9) die Erinnerung über self.realm.add(item) hinzu.

Testen der App

Probieren wir die App also aus, indem wir sie im Simulator erstellen und ausführen. Fahren Sie fort und fügen Sie zwei Erinnerungen hinzu und legen Sie eine davon als erledigt fest, indem Sie darauf tippen. Wenn Sie Ihre App beenden und wieder öffnen, sollten Ihre Artikel noch vorhanden sein.

The completed appThe completed appThe completed app

Realm Browser

Und das ist es! Mit wenig bis gar keiner Lernkurve und durch die Umgehung jeglicher Komplexität von Core Data haben wir ein vollständig gebackenes Backend auf dem Gerät. Dies ist die mobile Realm-Datenbank. Sie können auch überprüfen, ob sich die Daten auf dem Gerät befinden, indem Sie Realm Browser herunterladen, eine macOS-App, mit der wir Realm-Datenobjekte anzeigen, debuggen und bearbeiten können.

Laden Sie die App aus dem Mac App Store herunter und öffnen Sie die Realm-Datenbank, die sich in Ihrem CoreSimulator/Devices/appID/data/…-Ordner befindet. Die gesuchte Datei ist db.realm.

Finding the Realm databaseFinding the Realm databaseFinding the Realm database

Wenn Sie es öffnen, sollten Sie nicht nur Ihre Daten anzeigen, sondern auch bearbeiten und neue Daten hinzufügen können. Mach weiter und probiere es aus!

Editing the database with Realm BrowserEditing the database with Realm BrowserEditing the database with Realm Browser

Abschluss

In diesem Tutorial haben Sie die Realm Mobile Database kennengelernt und erfahren, warum sie ein leistungsstarkes Tool für iOS-Entwickler ist. Wir haben auch kurz das Server-Gegenstück Realm Mobile Platform angesprochen, das wir in einem separaten Tutorial behandeln werden.

Wir haben dann eine einfache Erinnerungs-App erstellt, die von der Realm Mobile Database unterstützt wird. In nur wenigen Dutzend Codezeilen konnten wir:

  1. Erstellen Sie ein Live-Objektmodell für die Erinnerung
  2. Verdrahten Sie unseren View-Controller mit dem Datenmodell
  3. deklarieren, instanziieren, laden, hinzufügen und aus der Realm-Datenbank löschen

Schließlich haben Sie gesehen, wie Sie den Realm-Browser zum Debuggen und Anzeigen Ihrer Daten verwenden.

Dies ist eine sehr grundlegende Einführung in die Realm Mobile Database, aber Sie können sie als Ausgangspunkt für fortgeschrittenere Themen verwenden. Als nächste Schritte könnten Sie sich Folgendes ansehen:

Machen Sie sich unbedingt mit einigen der erweiterten Themen in der obigen Dokumentation vertraut, z. B. Arbeiten mit Datenbeziehungen, Testen von Realm-Objekten, Threading und Verschlüsselung.

Und während Sie hier sind, lesen Sie unbedingt einige unserer anderen Beiträge zur Entwicklung von iOS-Apps!

  • Mobile Entwicklung
    Back-End als Service für mobile Apps
    Bala Durage Sandamal Siripathi
  • Swift
    Kurztipp: Aufzählungen in Swift
    Bart Jacobs
  • App-Vorlagen
    15 besten Swift App-Vorlagen
    Davis Allie
  • Core Data
    Core Data und Swift: Core Data Stack
    Bart Jacobs
Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.