Как я могу легко удалить все объекты в царстве

У меня есть выбор для переноса, но я бы предпочел удалить все в моем 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))

Оба не могут предотвратить исключение миграции.

Ответ 1

Используйте deleteAll():

let realm = try! Realm()
try! realm.write {
    realm.deleteAll()
}

Ответ 2

В v0.87.0 существует deleteAllObjects метод RLRealm, который очистит Царство всех объектов.

Ответ 3

Вещи переместились в мир царства - в случае, если кто-то наткнулся на это сейчас, есть свойство, которое можно установить:

Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true

Затем он делает то, что рекламируется. (btw: много синтаксиса выше изменилось, если вы пытаетесь использовать любой из других методов)

Github PR https://github.com/realm/realm-cocoa/pull/3463

Ответ 4

Я думаю, что удаление файла Realm DB является правильным ответом, учитывая, что речь шла об удалении целого хранилища, а не о его переносе.

Вот быстрый код Swift для этого (с Swift 2.1 и Realm 0.96.2): ​​

if let path = Realm.Configuration.defaultConfiguration.path {
    try! NSFileManager().removeItemAtPath(path)
}

Я использую этот код в версии приложения DEBUG, если произошла ошибка миграции при загрузке хранилища, а затем я воссоздаю хранилище. Во время разработки схема может сильно измениться, поэтому было бы слишком громоздким, чтобы постоянно переносить миграцию.