2016-01-29 10 views
5

Questo è un po 'di fallout Parse.Come dovrei supportare la modalità offline usando DynamoDB e iOS?

Sto spostando un'applicazione per utilizzare DynamoDB ma non sembra supportare alcun tipo di modalità offline.

Come devo fare?

Mi piacerebbe utilizzare Realm ma finirò per dover gestire la sincronizzazione e l'oggetto < -> noSQL. Dovrei usare una bandiera su una riga per indicare che è stata sincronizzata?

Devo provare a mantenere la fila piatta come in Dynamo?

Non penso che la parte di sincronizzazione di Cognito sia applicabile qui.

risposta

2

Non ho mai usato DynamoDB, ma ho appena letto la documentazione di iOS sul sito web di Amazon, e PENSO che l'integrazione dei due sia possibile e relativamente facile.

Sembra che tu definisca modelli di dati in DynamoDB allo stesso modo di Realm: crea una sottoclasse di AWSDynamoDBObjectModel e aggiungi le tue proprietà. Poiché questo è il caso, finché hai creato un Reame Object (o RLMObject in Objective-C) con le stesse proprietà di corrispondenza, dovresti (teoricamente) essere in grado di passare semplicemente gli oggetti DynamoDB direttamente a Realm per essere salvato:

let realm = try! Realm() 

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

Realm è molto abile nel poter utilizzare KVC per verificare se gli oggetti passati sono conformi allo schema dei suoi oggetti modello e per recuperare e salvare automaticamente tali informazioni.

(NB: affinché il update: funzioni correttamente, è necessario assicurarsi che gli oggetti condividano anche una proprietà di chiave primaria comune).

Dal suono di esso, se stai cercando di modificare i dati salvati localmente in Realm mentre l'app è offline, e quindi spingere i dati modificati il ​​dispositivo è di nuovo online, allora starà a te per convertire nuovamente gli oggetti del modello Realm in oggetti DynamoDB per poterli reinserire in AWS.

È possibile aggiungere proprietà aggiuntive al modello di Realm, ad esempio un flag booleano hasChanges o un oggetto data lastModifiedDate per poter verificare che un oggetto non in linea abbia modifiche che devono essere caricate.

Fatemi sapere se avete bisogno di ulteriori chiarimenti!

(Full disclosure:. Io lavoro per Realm)

+0

Che bella idea! Ci provo e torno da te. –

+0

quale sarà il codice equivalente nell'obiettivo c? –

+1

Il metodo API equivalente in Objective-C sarebbe '[RLMObject createOrUpdateInRealm: withValue:]'! :) – TiM

Problemi correlati