我应该如何使用DynamoDB和iOS支持离线模式?

Sco*_*zie 5 realm ios amazon-dynamodb

这是一些Parse的后果.

我正在移动一个应用程序来使用DynamoDB但它似乎不支持任何类型的离线模式.

我该怎么做?

我想使用Realm,但我最终必须管理同步和对象< - > noSQL.我应该在一行上使用一个标志来表明它已被同步吗?

我应该尝试将行保持在Dynamo中吗?

我不认为Cognito的同步部分适用于此处.

TiM*_*TiM 2

我之前没有使用过 DynamoDB,但我刚刚阅读了 Amazon 网站上的 iOS 文档,我认为集成两者应该是可能的,而且相对容易。

看起来您在 DynamoDB 中定义数据模型的方式与 Realm 相同:创建子类AWSDynamoDBObjectModel并添加属性。在这种情况下,只要您创建了具有相同匹配属性的 Realm Object(或RLMObject在 Objective-C 中),您(理论上)应该能够简单地将 DynamoDB 对象直接传递到要保存的 Realm:

let realm = try! Realm()

try! realm.write {
    realm.create(MyRealmSubclass.self, value: MyDynamoDBObject, update: true)
}
Run Code Online (Sandbox Code Playgroud)

Realm 非常聪明,能够使用 KVC 查看传递给它的任何对象是否符合其模型对象的架构,并自动检索和保存该信息。

(注意:为了update:正常工作,您还需要确保您的对象也共享一个公共主键属性)。

从它的声音来看,如果您希望在应用程序离线时修改 Realm 中本地保存的数据,然后将修改后的数据推送到设备重新上线,那么就需要您来转换 Realm将模型对象放回到 DynamoDB 对象中,以便推送回 AWS。

您当然可以向领域模型添加其他属性,例如布尔hasChanges标志或lastModifiedDate日期对象,以便能够检查离线对象是否有需要上传的更改。

如果您需要任何其他说明,请告诉我!

(全面披露:我为 Realm 工作。)