2015-09-07 3 views
1

Я мигрируют из CoreData в Realm ... по существу, мне нужно иметь две отдельные базы данных, позволяет сказать, что один только с In-Memory, а второй с диска настойчивостьюРодитель Ребенок 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 основных царства (один в памяти ORY и один диск хранится), и чем делать что-л как

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 

    }); 

}); 
+0

В царстве нет понятия «субреализм». Что бы это значило? Царство - это набор объектов. Что бы вы видели в своем детском царстве? По дизайну Королевства дочернее царство может быть подмножеством объектов. Но это не то, что вы описываете ... – Michal

+0

Мне нужно иметь два Realms, один для InMemory (Realm1) и один для настойчивости (Realm2), а в потоках я должен разбираться с Realm1 или Realm2 ... на компакт-диске это было возможно, создав дочерний контекст, который удалил все объекты из контекста и был сохранен обратно в этот контекст. –

+0

Если это просто для производительности, и все объекты из области памяти в памяти должны попасть в постоянное царство в любом случае, почему бы просто не добавить их прямо в постоянное царство в фоновом потоке? – ast

ответ

1

Это звучит, как вы, возможно, пытается более-инженер решение, когда вы действительно не нужно.

Realm не подписался на ту же модель, что и Core Data, где вам нужна цепочка контекстов, чтобы все обновлялось по потокам. После совершения транзакции записи изменения в этом Realm доступны для всех потоков на следующей итерации цикла выполнения.

Моя рекомендация заключалась бы в том, чтобы удалить область памяти (даже временно), сделать все с помощью Real-пространства на диске и посмотреть, работает ли это достаточно для ваших нужд. Царство злобно быстро, поэтому вам не нужна настоящая версия буфера памяти.

Если вам абсолютно необходимо обладание памятью, имейте в виду, что они будут двумя дискретными объектами Царства; вы не можете связать их, и вы не можете обмениваться объектами между ними (вам нужно вручную создать их для каждого Царства), поэтому вы должны оценить, действительно ли вам это нужно. Удачи!

Смежные вопросы