gpt4 book ai didi

ios - 父子 Realm

转载 作者:行者123 更新时间:2023-11-29 12:13:59 27 4
gpt4 key购买 nike

我正在从 CoreData 迁移到 Realm...本质上我需要有两个独立的数据库,假设一个只有内存,第二个有磁盘持久性

现在在解析期间,我需要创建一个可以在给定线程中工作但与我选择的顶级 Realm 链接的 Realm,而不仅仅是默认 Realm(如线程的 CoreData 子上下文)

目前我是这样做的

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

RLMRealm * realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
// ...
[realm commitWriteTransaction];

dispatch_async(dispatch_get_main_queue(), ^{

// the objects from above are now saved in the default real

});

});

但我需要有 2 个主要 Realm (一个在内存中,一个存储在光盘中),而不是像这样

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

RLMRealm * realm = [RLMRealm childRealmWithParentRealm:myRealm1];
[realm beginWriteTransaction];
// ...
[realm commitWriteTransaction];

dispatch_async(dispatch_get_main_queue(), ^{

// the objects from above are now saved in the myRealm1

});

});

最佳答案

这听起来像是您可能在实际上不需要解决方案时试图过度设计它。

Realm 不订阅与 Core Data 相同的模型,在 Core Data 中您需要上下文链来确保所有内容都跨线程更新。一旦写入事务被提交,对该 Realm 的更改在运行循环的下一次迭代中的所有线程上都是可用的。

我的建议是删除内存中的 Realm(即使只是暂时的),使用磁盘上的 Realm 做所有事情,看看它是否足以满足您的需求。 Realm 的速度非常快,所以您真的不需要这样的内存缓冲区版本。

如果您绝对需要内存中的 Realm,请记住它们将是两个离散的 Realm 实体;你不能链接它们,你不能在它们之间共享对象(你需要为每个 Realm 手动创建它们),所以你应该评估你是否真的需要它。祝你好运!

关于ios - 父子 Realm ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440822/

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