Мы используем Realm для кэширования объектов ChatMessage в нашем приложении iOS. Мы также используем Realm для сохранения некоторых других локальных объектов в нашем приложении. Для сообщений чата, когда мы получаем сообщения от PubNub, мы создаем новый локальный объект ChatMessage и записываем его в основную очередь. Для записи других объектов мы выгружаем их в неспецифическую глобальную очередь и помещаем в нее транзакцию записи.Какие могут быть причины ошибок «уже в транзакции записи» для Realm iOS?
В настоящее время мы постоянно испытываем исключения, когда мы написали объекты ChatMessage, указав, что транзакции были «уже в транзакции записи». Я проверил все места, чтобы убедиться, что нет функции, которая запускает beginWriteTransaction в каждом коде beginWriteTransacdtion/commitWriteTransaction. И между этими кодами находятся в основном только изменения объектов или модификаций объектов Realm. Поэтому мы абсолютно не знаем, почему эта ошибка произошла. (Это не очень часто. Обычно 1-3 раза в день.)
Возможно ли, что несколько сообщений из PubNub входят (в основной очереди), вызывает несколько транзакций записи, ведущих к этой проблеме? Или может быть какое-то недоконченное commitWriteTransaction вызывать такой тип проблемы (мы еще не проверяли ошибки транзакции фиксации, я не уверен, что лучший способ обрабатывать ошибки из Realm)? Кроме того, может ли любая транзакция записи не удалась, когда приложения вошли в фон и вызвали такие ошибки?
Спасибо всем очень!
Спасибо! Я прочитал [контактную страницу] (https://realm.io/contact/), и он предоставляет мне linux stackoverflow, поэтому я разместил здесь вопрос. Я не нахожу способ воспроизвести ошибку, но это происходит несколько раз в день, и это не дает мне понять, как это происходит. –
Можете ли вы поделиться либо своим проектом, либо примером кода, который воспроизводит проблему на [email protected]? Мы будем рады помочь, но этого недостаточно. – jpsim
наши коды становятся довольно сложными, и у меня нет некоторых минимальных копий для образца. Но теперь мы пытаемся переместить транзакции записи в одну последовательную очередь, чтобы проверить, не возникают ли проблемы из-за параллелизма. Большое спасибо! –