gpt4 book ai didi

realm - 有没有办法修改 RLMObject 而不保留它?

转载 作者:行者123 更新时间:2023-12-02 10:45:38 26 4
gpt4 key购买 nike

我对 Realm 还很陌生,正在考虑在特定项目中放弃 CoreData 堆栈,转而使用它,因为我大多只需要本地存储 - Realm 至少在纸面上感觉是完美的匹配。我面临的问题是,我无法找到一种方法来修改从 RLMResults 检索的子类 RLMObject,而无需写入事务。我确实明白这是从哪里来的,但在我的具体情况下,这是一个问题 - 用户可以自由修改对象,然后保存或放弃更改。如果用户取消了他的编辑,那么让 Realm 保持最新然后回滚是不对的,而且所有解决方法对我来说都感觉很脏。是否有一种聪明的方法可以自由修改对象,并且仅在用户决定保存其更改时点击 createOrUpdate ?

最佳答案

您在这里寻找的设计模式可能会“分离”Realm 对象,以便您可以在内存中将其修改为“独立对象”(不绑定(bind)到任何 Realm)。您可以通过从旧对象的值初始化新对象来完成此操作:

@interface Dog : RLMObject
@property NSInteger identifier;
@property NSString *name;
@end
@implementation Dog
+ (NSString *)primaryKey {
return @"identifier";
}
@end

// Editing screen...

Dog *standaloneDog = [[Dog alloc] initWithValue:persistedDog];
standaloneDog.name = @"Fido"; // <- no write transaction necessary

// On save:

RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
// updates the persisted dog with the standalone dog's new values.
[Dog createOrUpdateInRealm:realm withValue:standaloneDog];
}];

// Nothing to do on cancel since the object was standalone.

请参阅 Realm 的 Objective-C 文档中有关“更新对象”的更多信息:https://realm.io/docs/objc/latest/#updating-objects

关于realm - 有没有办法修改 RLMObject 而不保留它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com