这是对 Parse 的一点影响。
我正在移动一个应用程序以使用 DynamoDB,但它似乎不支持任何类型的离线模式。
我应该怎么做?
我想使用 Realm,但我最终不得不管理同步和对象 <-> noSQL。我应该在一行上使用标志来指示它已同步吗?
我是否应该像在 Dynamo 中一样尽量保持平整?
我认为 Cognito 的同步部分不适用于此处。
最佳答案
我以前没有使用过 DynamoDB,但我只是通读了亚马逊网站上的 iOS 文档,我认为集成两者应该是可能的,而且相对容易。
看起来您在 DynamoDB 中定义数据模型的方式与 Realm 相同:创建 AWSDynamoDBObjectModel
的子类并添加您的属性。在这种情况下,只要您创建了一个具有相同匹配属性的 Realm Object
(或 Objective-C 中的 RLMObject
),您应该(理论上)能够简单地将 DynamoDB 对象直接传递给要保存的 Realm:
let realm = try! Realm()
try! realm.write {
realm.create(MyRealmSubclass.self, value: MyDynamoDBObject, update: true)
}
Realm 非常聪明,能够使用 KVC 查看传递给它的任何对象是否符合其模型对象的架构,并自动检索和保存该信息。
(注意:为了使 update:
正常工作,您还需要确保您的对象也共享一个公共(public)主键属性)。
从它的声音来看,如果您希望在应用程序离线时修改 Realm 中本地保存的数据,然后将修改后的数据推送到设备重新在线,那么这将取决于您将 Realm 模型对象转换回 DynamoDB 对象,以便推送回 AWS。
您当然可以向 Realm 模型添加其他属性,例如 bool hasChanges
标志或 lastModifiedDate
日期对象,以便能够检查离线对象有需要上传的更改。
如果您需要任何其他说明,请告诉我!
(全面披露:我为 Realm 工作。)
关于ios - 我应该如何支持使用 DynamoDB 和 iOS 的离线模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080103/