Ceci est mon premier projet DB, donc je suis confronté à des problèmes. J'espère que vous pouvez m'aider! J'utilise FMDB pour avoir accès à une base de données existante. Quand j'essaie d'exécuter une requête simpel comme "Select * From films", elle renvoie des trucs comme "no such table". J'ai regardé dans le dossier du simulateur IPhone et j'ai trouvé la base de données, mais elle était vide. Mon étape suivante consistait à inclure cette méthode:Copier la base de données après avoir démarré rapidement
func copyDatabaseIfNeeded() {
// Move database file from bundle to documents folder
let fileManager = FileManager.default
let documentsUrl = fileManager.urls(for: .documentDirectory,
in: .userDomainMask)
guard documentsUrl.count != 0 else {
return // Could not find documents URL
}
let finalDatabaseURL = documentsUrl.first!.appendingPathComponent("foo.db")
if !((try? finalDatabaseURL.checkResourceIsReachable()) ?? false) {
print("DB does not exist in documents folder")
let documentsURL = Bundle.main.resourceURL?.appendingPathComponent("foo.db")
do {
try fileManager.copyItem(atPath: (documentsURL?.path)!, toPath: finalDatabaseURL.path)
} catch let error as NSError {
print("Couldn't copy file to final location! Error:\(error.description)")
}
} else {
print("Database file found at path: \(finalDatabaseURL.path)")
}
}
Mais cette méthode ne fonctionne pas. Je l'appelle de DidFinishLaunching.
Ceci est le message d'erreur:
OverBurned/Library/Developer/CoreSimulator/Devices/B5EAE004-A036-4BD5-A692-C25EF3875D25/data/Containers/Bundle/Application/5ABA8D38-7625-4F98-83E9-4266A3E5B6B0/GameOne.app/foo.db, NSUnderlyingError=0x600000053230 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
()
Suis-je utiliser la mauvaise méthode ou est mis en oeuvre ne va pas?
je l'ai trouvé plus facile à utiliser la bibliothèque sqlite.swift pour ma première application DB au lieu de FMDB. Cela pourrait valoir le détour. – Martheli
Votre message d'erreur ne correspond pas au code que vous avez publié. Et vous avez vraiment besoin de vous familiariser avec les options. – rmaddy