Importar y consultar a través de una database SQLite en Swift – iOS

Estoy haciendo una aplicación que hace uso de una gran database con 5 tablas diferentes. Quiero importar esa database al package de aplicaciones y poder consultar a través de las tablas. La database no será editada por el usuario, por lo que no se requiere agregar y eliminar loggings.

¿Cuál sería la mejor manera de agregar la database en la aplicación?

El process es el siguiente:

  1. Agregue la database a su package. Cuando lo arrastre a su proyecto, puede optar por agregarlo al destino que representa su aplicación principal. De forma alternativa, revise la configuration de destino, click "Generar fases" y confirme que la database aparece en la list "Copiar packages de resources".

  2. Use un marco como FMDB para simplificar su vida. Esto está escrito en Objective-C, pero también funciona muy bien en Swift. Lo que debe hacer es:

    • Copie los files .h y .m para FMDB en su proyecto;

    • Cuando se le solicite que cree un "encabezado de puente", hágalo;

    • Agregue la siguiente línea a su encabezado de puente:

      #import "FMDB.h" 

    Siguiendo estos pasos, puede usar este marco desarrollado en Objective-C en sus proyectos Swift.

  3. Ahora puede escribir su código Swift, utilizando el marco FMDB. Por ejemplo, el código Swift para abrir la database, seleccionar las columnas x , y , y z de una tabla llamada test , tendría el siguiente aspecto:

     let path = NSBundle.mainBundle().pathForResource("test", ofType:"sqlite") let database = FMDatabase(path: path) if !database.open() { print("Unable to open database") return } if let rs = database.executeQuery("select * from test", withArgumentsInArray: nil) { while rs.next() { let x = rs.stringForColumn("x") let y = rs.stringForColumn("y") let z = rs.stringForColumn("z") print("x = \(x); y = \(y); z = \(z)") } } else { print("executeQuery failed: \(database.lastErrorMessage())") } database.close()