我想为Realm.io数据库中的现有对象模型创建编辑视图。视图控制器有一个保存按钮,应该保留更改,还有一个取消按钮,应该放弃更改。
我无法在写入事务之外修改RLMObject
,那么临时修改RLMObject
的建议方法是什么,以便在必要时稍后放弃更改?
答案 0 :(得分:1)
您可以将领域对象作为内存中对象传递到编辑视图控制器以进行编辑。像这样:
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中更新该对象。请注意,您的对象必须具有主键才能使其正常工作。
如果用户按下“取消”,您可以放弃该内存中对象,就像没有发生任何事情一样。
请注意,我们打算在将来添加事务回滚功能,这将简化此模式。