2016-01-29 16 views
5

To jest trochę opadu Parse.Jak powinienem obsługiwać tryb offline za pomocą DynamoDB i iOS?

Przenoszę aplikację, aby używać DynamoDB, ale nie obsługuje ona żadnego trybu offline.

Jak powinienem to zrobić?

Chciałbym użyć Realm, ale w końcu będę musiał zarządzać synchronizacją i obiektem < -> noSQL. Czy powinienem użyć flagi w rzędzie, aby wskazać, że została zsynchronizowana?

Czy powinienem starać się utrzymać rząd płasko jak w Dynamo?

Nie sądzę, że część synchronizacji Cognito ma zastosowanie tutaj.

Odpowiedz

2

Nie korzystałem wcześniej z DynamoDB, ale przeczytałem dokumentację na iOS na stronie Amazon i myślę, że integracja tych dwóch elementów powinna być możliwa i stosunkowo łatwa.

Wygląda na to, że definiujesz modele danych w DynamoDB w taki sam sposób jak Realm: utwórz podklasę AWSDynamoDBObjectModel i dodaj swoje właściwości. W takim przypadku, dopóki utworzono dziedzinę Object (lub RLMObject w Objective-C), która miała te same właściwości dopasowania, teoretycznie, powinieneś (teoretycznie) móc po prostu przekazać obiekty DynamoDB bezpośrednio do dziedziny, aby je zapisać:

let realm = try! Realm() 

try! realm.write { 
    realm.create(MyRealmSubclass.self, value: MyDynamoDBObject, update: true) 
} 

Sfera jest bardzo sprytna w używaniu KVC do sprawdzania, czy jakiekolwiek obiekty przekazane do niej są zgodne ze schematem swoich obiektów modelu oraz do automatycznego pobierania i zapisywania tych informacji.

(UWAGA: aby funkcja update: działała poprawnie, należy również upewnić się, że obiekty mają wspólną wspólną właściwość klucza podstawowego).

Z ich dźwięków, jeśli chcesz zmodyfikować lokalnie zapisane dane w Królestwie, gdy aplikacja jest w trybie offline, a następnie przesłać zmodyfikowane dane, urządzenie znów jest w trybie online, to wszystko zależy od Ciebie aby przekonwertować obiekty modelu Realm z powrotem na obiekty DynamoDB, aby można je było ponownie przesłać do AWS.

Z pewnością można dodać dodatkowe właściwości do modelu dziedziny, takie jak flaga typu boolean hasChanges lub obiekt daty lastModifiedDate, aby można było sprawdzić, czy obiekt offline zawiera zmiany, które wymagają przesłania.

Daj mi znać, jeśli potrzebujesz dodatkowych wyjaśnień!

(Pełne ujawnienie. Pracuję dla Realm)

+0

Co za wspaniały pomysł! Dam ci szansę i wrócę do ciebie. –

+0

jaki będzie odpowiednik kodu w obiektywnym c? –

+1

Równoważną metodą API w Objective-C byłoby "[RLMObject createOrUpdateInRealm: withValue:]'! :) – TiM

Powiązane problemy