Ответ 1
Используйте deleteAll()
:
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
У меня есть выбор для переноса, но я бы предпочел удалить все в моем defaultRealm(). Как я могу сделать это легко?
realm.deleteObject(object)
- единственная функция вместе с .deleteObjects.
Я пробовал следующий код:
Способ 1
realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))
Способ 2
realm.deleteObjects(Dog.allObjectsInRealm(realm))
realm.deleteObjects(Person.allObjectsInRealm(realm))
realm.deleteObjects(Goal.allObjectsInRealm(realm))
realm.deleteObjects(Goals.allObjectsInRealm(realm))
Оба не могут предотвратить исключение миграции.
Используйте deleteAll()
:
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
В v0.87.0 существует deleteAllObjects
метод RLRealm
, который очистит Царство всех объектов.
Вещи переместились в мир царства - в случае, если кто-то наткнулся на это сейчас, есть свойство, которое можно установить:
Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true
Затем он делает то, что рекламируется. (btw: много синтаксиса выше изменилось, если вы пытаетесь использовать любой из других методов)
Я думаю, что удаление файла Realm DB является правильным ответом, учитывая, что речь шла об удалении целого хранилища, а не о его переносе.
Вот быстрый код Swift для этого (с Swift 2.1 и Realm 0.96.2):
if let path = Realm.Configuration.defaultConfiguration.path {
try! NSFileManager().removeItemAtPath(path)
}
Я использую этот код в версии приложения DEBUG, если произошла ошибка миграции при загрузке хранилища, а затем я воссоздаю хранилище. Во время разработки схема может сильно измениться, поэтому было бы слишком громоздким, чтобы постоянно переносить миграцию.