2016-09-07 4 views
3

область уже находится в транзакции записи.область уже в транзакции записи

Как я могу избежать этой ошибки? есть ли способ проверить область в тяге записи? если realm находится в транзакции записи, тогда закрывается первым, а затем выполняет другую работу. Теперь после получения этой ошибки «область уже находится в транзакции записи». то другие задачи, связанные с царством, также не работают.

ответ

3

Правило большого пальца для Царства - это только одна транзакция записи, открытая на RLMRealm в любой момент времени. Возможно, вам придется пересмотреть свою логику, если вы нажмете эту ошибку. Вы никогда не должны преднамеренно пытаться открыть вторую транзакцию записи на RLMRealm, которая уже открыта в том же потоке. Выполнение этого в отдельных потоках прекрасное, но поток, второй транзакции записи, будет заблокирован до завершения первого.

Если что-то в вашей реализации не установлено правильно, также возможно, что транзакция, которую вы предположили, завершила, возможно, имела ошибку и осталась открытой. Как сказал Себастьян, вы можете проверить это с помощью -[RLMRealm inWriteTransaction], но в этом случае вам обязательно нужно отменить свой код, чтобы узнать, почему это происходит.

1

Если вы выполняете задание на запись в том же потоке, вы можете добавить их в NSMutableArray, затем использовать addOrUpdateObjectsFromArray. С другой стороны, вы можете проверить, чтобы избежать конфликтов записи, нажав inWriteTransaction на объект realm.

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