Удалить все данные из конкретного объекта Realm Swift
прежде чем я зайду слишком далеко в свой вопрос. Моя цель, которая может повлиять на ваши ответы, - удалить Object
данные, если они больше не находятся в облаке.
Итак, если у меня есть массив ["one", "two", "three"]
затем в моем сервере я удаляю "two"
Я хочу, чтобы мое царство, чтобы обновить изменения.
Я считаю, что лучший способ сделать это-удалить все данные в конкретном Object
, затем вызовите мой REST API для загрузки новых данных. Если есть лучший способ, пожалуйста дайте мне знать.
хорошо, вот моя проблема.
у меня есть объект Notifications()
каждый раз, когда вызывается мой REST API, прежде чем он загружает что-либо, я запускаю это:
let realm = Realm()
let notifications = Notifications()
realm.beginWrite()
realm.delete(notifications)
realm.commitWrite()
Я получаю эту ошибку после запуска: Can only delete an object from the Realm it belongs to.
так что я попробовал что-то вроде этого:
for notification in notifications {
realm.delete(notification)
}
realm.commitWrite()
ошибка, которую я получаю в xcode, такова:"Type Notifications does not conform to protocol 'SequenceType'
не совсем уверен, куда идти отсюда.
просто пытаюсь выяснить области. Совершенно новый для него
Примечание: realm.deleteAll()
работает, но я не хочу, чтобы все мое царство было удалено, просто уверен Objects
1 ответов
вы ищете это:
let realm = Realm()
let deletedValue = "two"
realm.write {
let deletedNotifications = realm.objects(Notifications).filter("value == %@", deletedValue)
realm.delete(deletedNotifications)
}
или, возможно, этот:
let realm = Realm()
let serverValues = ["one", "three"]
realm.write {
realm.delete(realm.objects(Notifications)) // deletes all 'Notifications' objects from the realm
for value in serverValues {
let notification = Notifications()
notification.value = value
realm.add(notification)
}
}
хотя в идеале вы бы установили первичный ключ на Notifications
Так что вы можете просто обновить эти существующие объекты, а не прибегать к крайнему подходу к уничтожению всех ваших локальных объектов, чтобы просто воссоздать их все (или почти).