Jesteśmy w trakcie przekształcania projektu, aby korzystać z dziedziny. Jesteśmy pod wrażeniem do tej pory, szczególnie z Realm Browser (bardzo przydatny!).Właściwe wzorce użytkowania/najlepsze praktyki?
W rezultacie pojawiło się kilka pytań i chcielibyśmy uzyskać pewne konkretne schematy użytkowania, zanim przejdziemy dalej. Nasza aplikacja jest mocno wielowątkowa (wywołania API, animacje itp.), Więc miej to na uwadze podczas czytania pytań, ponieważ wiem, że do instancji Realm nie można uzyskać dostępu przez wątki (obecnie).
- Jak bardzo powinniśmy się martwić powtarzaniem tworzenia instancji w Królestwie? Jakie są koszty ogólne?
- Czy powinniśmy zawracać sobie głowę instancjami Realm w ViewControllers lub Singletons do wielokrotnego użytku? Próbowaliśmy tego, ale czasami dostęp do instancji uzyskujemy z różnych wątków, więc musieliśmy powrócić do tworzenia nowej instancji za każdym razem.
- Podczas uzyskiwania dostępu do właściwości relacji w instancjach Realm, czy dane wynikowe są odczytywane w pamięci lub czy są odczytywane z dysku za każdym razem? Czy musimy się martwić o zachowane instancje Realm stają się zbyt duże ze względu na dostęp do relacji głębokich?
Kiedy trzeba odświeżyć instancję dziedziny? Zauważyłem, że gdy wprowadzam zmiany w przeglądarce Realm, są one odzwierciedlane w zachowanej rzeczywistości bez konieczności odświeżania połączenia.- Wygląda na to, że w każdej dziedzinie występuje właściwość Auto-Refresh, która powoduje to zgodnie z dokumentacją.
- Czy uzyskuje dostęp do właściwości
realm
na złym ćwiczeniuObject
? Użyliśmy tego do napisania do Królestwa, jeśli funkcja używająca tego obiektu nie stworzyła obiektu lub Królestwa (oczywiście w tym samym wątku).
Na przykład ...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
góry dzięki. Czekam na twoje odpowiedzi. : D
Fantastyczne! Dzięki za super szybką odpowiedź. Z pewnością napiszemy jeszcze więcej pytań! Punkt dotyczący automatycznego odświeżania, który jest domyślnie włączony w głównym wątku, powinien prawdopodobnie zostać dodany do dokumentacji. :) – lionpants
Wcale nie! Wielkie dzięki! Ahh, właściwie to się poprawiam. Właśnie wróciłem i sprawdziłem kod, aby to potwierdzić, i wygląda na to, że autorefresh jest teraz domyślnie włączony we wszystkich wątkach. Zaktualizowałem swoją odpowiedź, aby to odzwierciedlić. – TiM
Naprawdę jestem zestresowany przez ten problem w wyjątku pamięci i nie mogę tego obejść, a użytkownicy często narzekają na aplikację produkcyjną – Eenvincible