Я хочу, чтобы обновить базу данных Realm в фоновом потоке, как это: (Потому что я получил свежие данные Webservice)Возможно ли сделать копию объекта Realm?
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteAllObjects]; // !!
[Pubs createOrUpdateInRealm:[RLMRealm defaultRealm] withJSONArray:data];
[realm commitWriteTransaction];
Проблема заключается в том, что я пока удалить & обновить объекты в Realm дб, пользователь может открыть какой-то Detail ViewController, указывающий на некоторый объект Realm (Pubs), который был удален тем временем, поэтому выбрано исключение.
Я не вижу никакого решения для этого, за исключением того, всегда, когда я хотел бы получить доступ к объекту Realm от Detail контроллера или его имущества, что мне нужно будет всегда делать что-то вроде этого:
(Это означает, что всегда получают Объект Realm, но это может, вероятно, тоже сбой).
pub = [Pubs objectsWhere:[NSString stringWithFormat: @"pubId = %lu", (long)_selectedPubId]].firstObject;
Но я не использую это решение. Я имею в виду, лучше всего было бы, если я мог бы назвать в деталях контроллера представления что-то вроде этого:
pub = [Pubs objectsWhere:[NSString stringWithFormat: @"pubId = %lu", (long)_selectedPubId]].firstObject;
pub = [pub safeCopy];
Так PubRealmObject может быть тем временем удалены, но объект паб соло будет существовать в памяти (только для цели, чтобы Acces его свойства данных).
Так кто-то пытался что-то подобное?
Может быть, даже с использованием некоторых SDK для iOS like this?
Мне нужно только получить доступ к свойствам данных, как я говорю, не работать с такими объектами объектов, как удаление или обновление объекта в db.
Btw Я попытался вызвать обновление Realm db в основном потоке, но проблема в том, что он занимает 5-7 секунд (всего 1000 объектов json), поэтому он отстает от приложения. Вот почему я думаю, что обновление фона & может быть лучше.
Но я думаю, что он может потерпеть неудачу даже при копировании объекта, так что же это за решение? (обновление фона по сравнению с безопасным доступом к объекту Realm)
Привет TiM THX для ответа. Я проверю. Что касается метода createOrUpdateInRealm, вы правы, у меня была такая же идея, но я предполагаю, что это не удалит удаленные строки. Они останутся. Поэтому мне пришлось бы найти, которые были удалены и удалены в любом случае, и пользователь может открыть удаленный элемент, и ситуация такая же. Но появление некоторых данных может быть довольно редким, это правда. Так может быть, я мог бы выбирать именно так. Я увижу. – luky