iphone sqlite

iphone - sqlite swift



¿Dónde colocarías tu archivo de base de datos SQLite en una aplicación de iPhone? (2)

Primero debe agregar el archivo SQLite a su proyecto Xcode; el lugar más adecuado es en la carpeta de recursos.

Luego, en el archivo de código de delegado de su aplicación, en el método appDidFinishLaunching, primero debe verificar si ya se ha creado una copia editable del archivo SQLite, es decir: se ha creado una copia del archivo SQLite en la carpeta del documento del usuario en el sistema de archivos de iPhone. En caso afirmativo, no haces nada (de lo contrario lo sobreescribirías con la copia Xcode SQLite predeterminada)

Si no, entonces copie el archivo SQLite allí - para hacerlo escribible.

Vea el siguiente ejemplo de código para hacer esto: esto ha sido tomado del ejemplo de código de libros SQLite de Apple donde se llama este método desde la aplicación delega el método appDidFinishLaunching.

// Creates a writable copy of the bundled default database in the application Documents directory. - (void)createEditableCopyOfDatabaseIfNeeded { // First, test for existence. BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"bookdb.sql"]; success = [fileManager fileExistsAtPath:writableDBPath]; if (success) return; // The writable database does not exist, so copy the default to the appropriate location. NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"bookdb.sql"]; success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; if (!success) { NSAssert1(0, @"Failed to create writable database file with message ''%@''.", [error localizedDescription]); } }

============

Aquí está el código de arriba en Swift 2.0+

// Creates a writable copy of the bundled default database in the application Documents directory. private func createEditableCopyOfDatabaseIfNeeded() -> Void { // First, test for existence. let fileManager: NSFileManager = NSFileManager.defaultManager(); let paths:NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory:NSString = paths.objectAtIndex(0) as! NSString; let writableDBPath:String = documentsDirectory.stringByAppendingPathComponent("bookdb.sql"); if (fileManager.fileExistsAtPath(writableDBPath) == true) { return } else // The writable database does not exist, so copy the default to the appropriate location. { let defaultDBPath = NSBundle.mainBundle().pathForResource("bookdb", ofType: "sql")! do { try fileManager.copyItemAtPath(defaultDBPath, toPath: writableDBPath) } catch let unknownError { print("Failed to create writable database file with unknown error: /(unknownError)") } } }

Cuando inicialmente creo un archivo de base de datos SQLite con datasets preincorporados para mi aplicación, tendría que colocar este archivo en algún lugar de mi proyecto Xcode para que vaya a mi aplicación de iPhone. Supongo que "recursos" es el lugar correcto para eso.

¿Cuáles son los "pasos" básicos para la implementación de un archivo de base de datos SQLite en una aplicación de iPhone?

  • creando la base de datos manualmente
  • agregar el archivo de base de datos al proyecto (¿dónde?)

Actualmente estoy leyendo toda la documentación de SQLite, aunque eso no está relacionado con el iPhone.


Si solo va a consultar datos, debería poder dejarlos en el paquete principal.

Esto, sin embargo, probablemente no sea una buena práctica. Si tuviera que extender su aplicación en el futuro para permitir la escritura de la base de datos, tendría que resolver todo de nuevo ...