Сначала я проверяю, self.statisticsArray.count == 0
, тогда я создаю новую запись, иначе я обновляю существующее значение. Когда я создаю новый объект, все в порядке, но когда я пытаюсь обновить существует, то он падает со следующей ошибкой:Попытка изменить объект за пределами транзакции записи - ошибка в Realm
Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first
Но я все это в одном .write
блоке, почему поднимается такая ошибка? Я читал, что если я использую .write()
, мне не нужно закрывать транзакцию. Может ли кто-нибудь описать меня, почему он падает?
if self.statisticsArray.count == 0 {
self.statistics.summary = 250
try! self.realm.write({
self.realm.add(self.statistics)
self.realm.add(record)
})
} else {
if day == self.statisticsArray.last?.date {
try! self.realm.write({
self.realm.objects(Statistics).last?.summary += 250
self.realm.add(record)
})
} else {
try! self.realm.write({
self.statistics.summary = (self.statisticsArray.last?.summary)! + 250
self.realm.add(self.statistics)
self.realm.add(record)
})
}
}
Нет, это не решение. Он все еще падает. И почему это не должно? 'self.statistics.mlSummary = 250' - это просто переменная класса. –
Если свойство 'statistics' является объектом Realm, которое было добавлено в Realm, тогда в любой транзакции записи должно быть выполнено редактирование любых его свойств. Просто потому, что это свойство 'self' не меняет этого. –
@AdamFish, помещая 'self.statistics.summary = 250' в блок' write', не помогает. Что вы мне посоветуете? –