Wir sind gerade dabei, ein Projekt auf Realm umzustellen. Wir sind bisher sehr beeindruckt, besonders vom Realm Browser (so praktisch!).
Infolgedessen sind einige Fragen aufgetaucht, und wir möchten einige konkrete Verwendungsmuster festlegen, bevor wir fortfahren. Unsere App ist stark multithreaded (API-Aufrufe, Animationen usw.). Denken Sie also beim Lesen der Fragen daran, da ich weiß, dass auf Realm-Instanzen (derzeit) nicht threadsübergreifend zugegriffen werden kann.
- Wie besorgt sollten wir uns sein, wiederholt Instanzen von Realm zu erstellen? Was ist der Overhead?
- Sollten wir uns die Mühe machen, Realm-Instanzen in ViewControllern oder Singletons für die wiederholte Verwendung beizubehalten? Wir haben dies versucht, aber manchmal wird auf die Instanzen von verschiedenen Threads aus zugegriffen, sodass wir jedes Mal wieder eine neue Instanz erstellen mussten.
- Werden beim Zugriff auf Beziehungseigenschaften in Realm-Instanzen die resultierenden Daten, die gelesen werden, im Speicher gespeichert oder jedes Mal von der Festplatte gelesen? Müssen wir uns Sorgen machen, dass beibehaltene Realm-Instanzen aufgrund des tiefen Beziehungszugriffs zu groß werden?
Wann ist eine Aktualisierung einer Realm-Instanz erforderlich? Ich habe festgestellt, dass Änderungen im Realm-Browser in einem beibehaltenen Realm angezeigt werden, ohne die Aktualisierung aufzurufen.- Es sieht so aus, als ob es in jedem Bereich eine Auto-Refresh-Eigenschaft gibt, die dies gemäß der Dokumentation verursacht.
- Ist der Zugang zum
realm
Grundstück eineObject
schlechte Praxis? Wir haben dies zum Schreiben in ein Realm verwendet, wenn die Funktion, die das Objekt verwendet, weder das Objekt noch das Realm erstellt hat (natürlich im selben Thread).
Zum Beispiel...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
Danke im Voraus. Ich freue mich auf Ihre Antworten. : D.