取消编辑视图Realm.io数据库



我想为Realm.io数据库中的现有对象模型创建一个编辑视图。视图控制器有一个保存按钮和一个取消按钮,保存按钮应保持更改,取消按钮应放弃更改。

我不能在写入事务之外修改RLMObject,那么建议使用什么方法临时修改RLMObject,以便在必要时稍后放弃更改?

您可以将您的领域对象作为内存中的对象传递给编辑视图控制器来进行编辑。像这样:

RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[StringObject createInDefaultRealmWithObject:@[@"a"]];
[realm commitWriteTransaction];
StringObject *obj = [[StringObject alloc] initWithObject:[[StringObject allObjects] firstObject]];
XCTAssertEqualObjects(obj.stringCol, @"a");
obj.stringCol = @"b"; // not in a write transaction
XCTAssertEqualObjects(obj.stringCol, @"b");

如果用户按下"保存",则可以调用createOrUpdateInDefaultRealmWithObject:并传入内存中的对象,然后该对象将传入所有值并在Realm中更新该对象。请注意,您的对象必须有一个主键才能工作。

如果用户按下"取消",您可以像什么都没发生一样丢弃内存中的对象。

请注意,我们打算在未来添加事务回滚功能,这将简化此模式。

最新更新