我应该如何支持使用DynamoDB和iOS的脱机模式?

我应该如何支持使用DynamoDB和iOS的脱机模式?,ios,amazon-dynamodb,realm,Ios,Amazon Dynamodb,Realm,这是一个小问题 我正在移动一个应用程序来使用DynamoDB,但它似乎不支持任何离线模式 我该怎么做 我想使用Realm,但最终我不得不管理同步和对象noSQL。我是否应该在行上使用标志来指示它已同步 我应该试着像在迪纳摩一样保持水平吗 我认为Cognito的同步部分在这里不适用 我以前没有使用过DynamoDB,但我只是浏览了亚马逊网站上的iOS文档,我认为将两者集成应该是可能的,而且相对容易 看起来您在DynamoDB中定义数据模型的方式与Realm相同:创建AWSDynamoDBObjec

这是一个小问题

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

我该怎么做

我想使用Realm,但最终我不得不管理同步和对象noSQL。我是否应该在行上使用标志来指示它已同步

我应该试着像在迪纳摩一样保持水平吗


我认为Cognito的同步部分在这里不适用

我以前没有使用过DynamoDB,但我只是浏览了亚马逊网站上的iOS文档,我认为将两者集成应该是可能的,而且相对容易

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

let realm = try! Realm()

try! realm.write {
    realm.create(MyRealmSubclass.self, value: MyDynamoDBObject, update: true)
}
Realm非常聪明,能够使用KVC查看传递给它的任何对象是否符合其模型对象的模式,并自动检索和保存该信息

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

听上去,如果你想在应用程序离线时修改Realm中本地保存的数据,然后在设备恢复在线时推送修改后的数据,那么你需要将Realm模型对象转换回DynamoDB对象,以便推送回AWS

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

让我知道如果你需要任何额外的澄清


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

多好的主意!我会试一试再给你回复。Objective-C中的等效API方法是
[RLMObject createOrUpdateInRealm:withValue:][/code>!:)我不确定它是否会以完全相同的方式工作,因为我不认为Android具有与iOS相同的键值编码概念(如果我错了,请阻止我!;)。如果情况变得更糟,您可以简单地拥有两组对象:一个DynamoDB模型对象和一个Realm模型对象,然后简单地复制这两组对象之间的值。@TiM dude!我有一个类似的问题:考虑服务器端是一个普通SQL数据库的事实,事实上,亚马逊。数据有点关系。现在,有像Zumero这样的产品可以完全同步MSFT SQLServer和你的iphone/android;但这并不好,因为这是一个普通的SQL数据库RDS,而不是MSFT的SQLServer。我想我可以在我的iphone/android上使用realm来做这件事——你怎么看?与此相关的是,你能给我指一个理想的论坛来讨论这个问题吗(如果你愿意的话,也许pm我)。干杯@TiM如何从“AWSDynamoDBObjectModel”和“RLMObject”
类扩展模型用户:Object,Codable,AWSDynamoDBObjectModel,AWSDynamoDBModeling{}
我想实现这样的目标。