Erfahren Sie die Grundlagen zu iOS Core Data

Es gibt verschiedene Möglichkeiten, um dauerhafte Daten auf iOS-Geräten zu verwenden. Es ist wichtig, die Vorteile jedes Ansatzes zu verstehen, bevor Sie entscheiden, welche Taktik angewendet werden soll.

Wenn zwischen den Starts nur eine geringe Menge an Informationen wie Benutzer- und Anwendungseinstellungen erforderlich ist, ist die NSUserDefaults-Klasse eine gute Wahl. Schlüssel-Wert-Paare, Wörterbücher und Arrays können mithilfe der NSUserDefaults-Klasse als Benutzeranwendungseinstellungen gespeichert werden. Die Verwendung eines Eigenschaftslistenansatzes (.plist) ist auch eine praktikable Option zum Speichern kleiner Datenmengen mithilfe eines Wörterbuchs oder Arrays. Die Klassen NSDictionary und NSArray unterstützen das Lesen und Schreiben in eine Eigenschaftslistendatei. Wenn für die App regelmäßig umfangreichere Daten wie Kontakte, Rezepte, Einkaufslisten usw. gespeichert und abgerufen werden müssen, muss das Core Data Framework verwendet werden.

Hinweis: Dieser Artikel wurde ursprünglich im Juni 2013 in unserem iOS App Builder-Blog veröffentlicht.

Verwenden von Kerndaten

Eine der leistungsstärksten Funktionen der iOS-Plattform ist die einfache Integration von Datenbankfunktionen in eine App. Viele iOS-Apps verwenden das integrierte SQLite-Datenbankmodul für öffentliche Domänen - zusammen mit dem Core Data-Framework -, um Informationen in ihren iOS-Apps beizubehalten. Durch die Verwendung von Kerndaten muss praktisch nicht mehr direkt mit der Datenbank gearbeitet werden, sodass der Entwickler keine transaktiven SQL-Anweisungen schreiben muss, um die Daten zu bearbeiten. Eine iOS-App muss normalerweise nur mit wenigen Klassen interagieren. Die NSManagedObject-Klasse repräsentiert Elemente, die gespeichert werden. Stellen Sie sich ein verwaltetes Objekt als einen einzelnen Datensatz in einer Tabelle vor. Die NSManagedObjectContext-Klasse repräsentiert eine Sammlung verwalteter Objekte. Die Kontextklasse für verwaltete Objekte verwaltet, arbeitet und speichert verwaltete Objekte.

Verwaltete Core Data-Objekte werden in einem verwalteten Objektmodell definiert. Das NSManagedObjectModel besteht aus Entitäten, Attributen, Validierungen und Beziehungen. Es klingt zwar kompliziert, ist aber sehr einfach. Um einer iOS-App Core Data-Funktionen hinzuzufügen, müssen Sie das Framework einschließen ( Abbildung A ). Nach dem Hinzufügen des Core Data-Frameworks müssen Sie eine Core Data-Modelldatei hinzufügen. Erstellen Sie eine neue Datei, die Ihrem Projekt hinzugefügt werden soll, indem Sie entweder Datei | wählen Neu aus dem Menü oder indem Sie mit der rechten Maustaste auf das Projekt im Navigatorbereich klicken und Neue Datei auswählen. Wählen Sie die Datenmodellvorlage und benennen Sie die Datei ( Abbildung B ).

Abbildung A.

Abbildung B.

Nach der Erstellung wird die Datenmodelldatei im Navigationsbereich Ihres Projekts angezeigt. Doppelklicken Sie auf die Datenmodelldatei (.xcdatamodeld), um das Editorfenster zu öffnen ( Abbildung C ).

Abbildung C.

Mit dem Datenmodell-Editor können Sie unter anderem Entitäten und Attribute hinzufügen und Beziehungen konfigurieren. Stellen Sie sich Entitäten als Tabellen und Attribute als Felder in diesen Tabellen vor. Wählen Sie unten im Fenster des Datenmodell-Editors die Option Entität hinzufügen. Ein neues Entitätsobjekt sollte unter der Liste der Entitäten angezeigt werden ( Abbildung D ).

Abbildung D.

Geben Sie der Entität einen Namen, der die Sammlung von Daten, die erfasst und gespeichert werden, am besten darstellt. Wenn Sie beispielsweise eine iOS-App zum Speichern von Informationen zu verschiedenen Weinen in Ihrer Sammlung entwickelt haben, können Sie die Entität Weine benennen.

Fügen Sie bei ausgewählter Entität ein Attribut hinzu, um jede bestimmte Information zu speichern, die in der Entität enthalten sein soll. Mit anderen Worten, wenn wir Informationen über unsere Lieblingsweine speichern, müssen wir möglicherweise Attribute erstellen, die den Namen des Weins, den Jahrgang, den Typ, die Anzahl der vorhandenen Flaschen und eine Punktzahl oder Bewertung darstellen. Fügen Sie Attribute hinzu, indem Sie unten im Fenster des Datenmodell-Editors auf Attribut hinzufügen klicken. Jedem Attribut muss einer der folgenden von Core Data unterstützten Typen zugewiesen werden ( Tabelle A ).

Tabelle A.

Abhängig von der Komplexität der gespeicherten Informationen kann es erforderlich sein, mehrere Entitäten mit definierten Beziehungen zu erstellen. Aus Sicht eines Datenbankprogrammierers wird dieser Ansatz als Normalisierung bezeichnet. Die Normalisierung hilft bei der Leistung beim Suchen, Filtern und Sortieren großer Datenmengen.

Verwaltete Objekte können als Wörterbücher mit einem bekannten Schlüsselsatz betrachtet werden. Auf Attribute für verwaltete Objekte kann mit der valueForKey-Zugriffsmethode zugegriffen werden. Anhand des Weinlistenbeispiels können wir wie folgt auf einzelne Attribute der Wine-Entität zugreifen:

 NSString * wineName = {myWine valueForKey: @ "wineName"}; 

Das Aktualisieren von Attributen kann mithilfe von setValue: forKey:

 myWine setValue: @ "Silver Oak" forKey: @ "wineName"}; 

In der Core Data-Umgebung gibt es vier Hauptklassen, mit denen verwaltete Objekte bearbeitet werden. Diese Klassen sind: NSManagedObjectModel, NSManagedObjectContext, NSPersistentStoreCoordinator und NSPersistentStore. In den zuvor erwähnten Klassen Managed Object Model und Managed Object Context findet die gesamte Interaktion mit den Daten statt. Die Klassen Persistent Store Coordinator und Persistent Store interagieren mit der tatsächlichen SQLite- oder Binärspeicherdatei. Es gibt keinen Grund, direkt mit den Datendateien zu interagieren.

Wohin von hier aus?

Es ist unmöglich, alle Merkmale, Funktionen und Verwendungen von Kerndaten in einem halben Dutzend Absätzen zu beschreiben. In typischer Apple-Manier erstellt die Core Data-Umgebung jedoch eine Klassenebene zwischen dem Entwickler und dem iOS. Dies ermöglicht nicht nur eine schnelle Entwicklung und Bereitstellung, sondern garantiert auch die Kompatibilität mit zukünftigen Versionen von iOS. Es gibt mehrere gute Referenzen und Tutorials, die Ihnen helfen, in die Entwicklung von Kerndaten einzutauchen. Die Core Data Basics-Dokumentation der Apple Developer Site ist ein guter Ausgangspunkt.

Für abenteuerlustige Daten ist das SQLite Manager-Plug-In für Firefox ein hervorragendes Tool zum Erstellen von Proof-of-Concept-Datenbanken. Während die Core Data-Umgebung die Verwendung von extern erstellten SQLite-Datenbanken nicht zulässt, können Sie das Mock-up-Design als Modell für die Neuerstellung der Datenstruktur innerhalb der XCode-Datenmodellierungsschnittstelle verwenden. Mit einem grundlegenden Verständnis von Core Data können Sie iOS-Apps entwickeln, die mit den Contacts and Notes-Apps von Apple vergleichbar sind.

© Copyright 2021 | mobilegn.com