2016-07-29 24 views
1

Ich habe Realm manuell installiert, und es funktioniert auf meiner Haupt-App. Aber auf der heutigen Erweiterung kann ich RealmSwift nicht einmal importieren. Ich entschuldige mich, wenn diese Frage eine neue Frage ist, aber ich habe im Internet gesucht und kann keine korrekte aktualisierte Version finden. Ich habe gelesen , aber es ist vor einem Jahr geschrieben und es funktioniert nicht mehr.Realm in der heutigen Erweiterung

Also, wie gehe ich Realm verwenden, um Daten zwischen der Haupt-App und der Erweiterung zu teilen?

Danke für die Hilfe!

Antwort

4

Obwohl dieser Artikel ziemlich alt ist (Es verwendet nicht einmal Realm Swift! Es verwendet die Objective-C-Version überbrückt Swift!), Die Grundsätze der Verwendung von Realm mit iOS 8 Erweiterungen wurden nicht zu dem Punkt, wo die geändert Informationen dort sind veraltet.

Die wichtigsten Punkte zu beachten:

  1. Für alle Absichten und Zwecke, eine heute Extension ist ein völlig getrennt App von Ihrem Haupt-App. Es muss in der Lage sein, vollständig in sich geschlossen zu sein.
  2. Solange Sie die dynamische Framework-Version verwenden, können Sie eine Kopie von RealmSwift.framework mit Ihrer Hauptanwendung und der Erweiterung verknüpfen.
  3. Sie müssen sicherstellen, dass Sie Ihre Realm-Datei in der containerURLForSecurityApplicationGroupIdentifier URL gespeichert haben. Dies ist der einzige Ort, an dem Ihre Hauptanwendung und die Erweiterung Dateien gemeinsam nutzen können.
  4. Da die Today-Erweiterung technisch eine separate App ist, stellen Sie sicher, dass alle Object Unterklassen, die Sie erstellt haben, sowohl in Ihrer Hauptanwendung als auch in den Buildphasen Ihrer Erweiterung "Compile Sources" enthalten sind.

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. :)

+0

Hallo TiM, Danke für die Antwort! Wirklich hilfreich! (: Aber ich habe eine Frage, wie setze ich den Realm-Pfad? Weil derzeit RLMRealm.setDefaultRealmPath() nicht mehr mit RealmSwift funktioniert. ZB von der Website, die ich zitiert habe, in appDelegate.swift unter applicationDidFinishLaunchingWithOptions, die author used 'let Verzeichnis: NSURL = NSFileManager.defaultManager(). containerURLForSecurityApplicationGroupIdentifier (" group.it.fancypixel.Done ")! Lassen Sie RealmPath = Verzeichnis.Pfad! .stringByAppendingPathComponent (" db.realm ") RLMRealm.setDefaultRealmPath (RealmPath) ' Was funktioniert nicht mehr, danke! –

+1

Keine Sorge! Oh ja, das ist eine Sache, die in Realm seit diesem Tutorial geändert wurde.Alle Einstellungen für ein' Realm' wurden zu einem 'Configuration' Objekt zusammengefasst, einschließlich Die Datei-URL Der Code zum Konfigurieren eines Realms ist im Realm Sw verfügbar ift docs page: https://realm.io/docs/swift/latest/#realm-configuration – TiM

+0

Ach ja, danke! Habe es jetzt geschafft zu arbeiten. Entschuldigung für die neuen Fragen, ich habe erst vor kurzem angefangen zu programmieren. (: –