Maintenant, j'ai l'erreur Property types for 'value' property do not match. Old type 'float', new type 'double'
Comment effacer la base de données ou migrer avec succès?
Pour supprimer complètement le fichier Realm du disque et recommencer à zéro, il suffit d'utiliser NSFileManager
pour le supprimer manuellement.
Par exemple, pour supprimer le fichier de domaine par défaut:
NSFileManager.defaultManager().removeItemAtURL(Realm.Configuration.defaultConfiguration.fileURL!)
Si vous souhaitez conserver le fichier de domaine, mais le vider complètement d'objets, vous pouvez appeler deleteAll()
pour le faire:
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
Mise à jour: / J'ai l'impression d'avoir oublié de mentionner cela dans ma réponse initiale. Si vous choisissez de supprimer le fichier de royaume du disque, vous devez le faire avant de l'avoir ouvert sur l'un des threads de votre application. Une fois ouvert, Realm mettra en cache en interne une référence, qui ne sera pas publiée, même si le fichier est supprimé.
Si vous devez absolument ouvrir le fichier Realm pour vérifier son contenu avant de le supprimer, vous pouvez le placer dans une variable autoreleasepool
.
Voici comment faire dans Swift 4.1:
FileManager.default.removeItem(at:Realm.Configuration.defaultConfiguration.fileURL!)
En plus d'utiliser NSFileManager
pour supprimer le fichier, supprimez également le fichier .lock
et le dossier .management
. Sinon, si vous essayez de recréer le fichier de domaine avec le même nom, une erreur apparaîtra en indiquant qu'il ne peut pas le trouver.
Swift 4.2:
func remove(realmURL: URL) {
let realmURLs = [
realmURL,
realmURL.appendingPathExtension("lock"),
realmURL.appendingPathExtension("note"),
realmURL.appendingPathExtension("management"),
]
for URL in realmURLs {
try? FileManager.default.removeItem(at: URL)
}
let url = Realm.Configuration.defaultConfiguration.fileURL!
remove(realmURL: url)
Alors que les autres commentaires sont exacts, vous devriez vraiment regarder: https://realm.io/docs/Swift/latest/#migrations
Cela donne une explication très claire de la migration. C’est très simple et il est bien mieux de tout supprimer si on peut l’aider.
As-tu essayé
let realm = try! Realm()
realm.deleteAllObjects()
Vous pouvez également essayer de supprimer le royaume du périphérique en le branchant sur l'ordinateur, en accédant à Xcode puis en Périphérique, puis en recherchant le royaume actuel et en le supprimant.
Swift 4.2 Pour supprimer la base de données:
func remove(realmURL: URL) {
let realmURLs = [
realmURL,
realmURL.appendingPathExtension("lock"),
realmURL.appendingPathExtension("note"),
realmURL.appendingPathExtension("management"),
]
for URL in realmURLs {
try? FileManager.default.removeItem(at: URL)
}
let url = Realm.Configuration.defaultConfiguration.fileURL!
remove(realmURL: url)
Pour effacer la base de données:
try? realm.write {
realm.deleteAll()
}