Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 父子领域_Ios_Objective C_Realm - Fatal编程技术网

Ios 父子领域

Ios 父子领域,ios,objective-c,realm,Ios,Objective C,Realm,我正在从CoreData迁移到Realm。。。基本上,我需要有两个独立的数据库,比如说一个只有内存,另一个有磁盘持久性 现在,在解析过程中,我需要创建一个领域,该领域可以在给定线程中工作,但可以链接到我选择的顶级领域,而不仅仅是默认领域(如线程的CoreData子上下文) 目前我是这样做的 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ RLMRealm * realm =

我正在从CoreData迁移到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

    });

});
但我需要有两个主要领域(一个在内存中,一个存储光盘),而不是像smth一样

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并不订阅与核心数据相同的模型,在核心数据中,您需要一个上下文链来确保所有内容都跨线程更新。一旦提交了写事务,对该领域的更改将在运行循环的下一次迭代中的所有线程上可用

我的建议是删除内存中的领域(即使只是暂时的),对磁盘上的领域做任何事情,看看这是否足以满足您的需要。领域是邪恶的快,所以你不应该真的需要一个内存缓冲区版本这样


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

领域没有“次现实”的概念。那到底是什么意思?领域是一组对象。您认为您的子领域是什么?根据领域的设计,子领域可以是对象的子集。但这不是你所描述的…我需要有两个领域,一个用于内存(Realm1),一个用于持久性(Realm2),在线程中,我需要解析到Realm1或Realm2。。。在CD中,这可以通过创建一个子上下文来实现,该子上下文从上下文中继承所有对象,然后保存回该上下文。如果只是为了性能,内存中域中的所有对象都必须在持久域中结束,那么为什么不直接将它们添加到后台线程中的持久域中呢?