我想为 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 中更新该对象。请注意,您的对象必须有一个主键才能工作。
如果用户按下“取消”,您可以丢弃该内存中的对象,就好像什么都没发生一样。
请注意,我们打算在将来添加事务回滚功能,这将简化此模式。