2014-10-13 13 views
6

Realizzo un'app che utilizza un grande database con 5 diverse tabelle. Voglio importare quel database nel pacchetto di app ed essere in grado di interrogare attraverso le tabelle. Il database non verrà modificato dall'utente, quindi non è necessario aggiungere e rimuovere record.Importazione ed interrogazione tramite un database SQLite in Swift - iOS

Quale sarebbe il modo migliore per aggiungere il database nell'app?

risposta

9

Il processo è il seguente:

  1. Aggiungere il database al vostro pacco. Quando lo trascini nel tuo progetto, puoi scegliere di aggiungerlo alla destinazione che rappresenta la tua app principale. In alternativa, rivedi le impostazioni di destinazione, fai clic su "Crea fasi" e verifica che il database sia visualizzato nell'elenco "Copy Bundle Resources".

  2. utilizzare un quadro di come FMDB per semplificare la vita. Questo è scritto in Objective-C, ma funziona perfettamente anche in Swift. Quello che devi fare è:

    • Copia i file .h e .m per FMDB nel tuo progetto;

    • Quando viene richiesto di creare un "header ponte", farlo;

    • Aggiungere la seguente riga al vostro intestazione colmare:

      #import "FMDB.h" 
      

    Seguendo questi passaggi, è possibile utilizzare questo framework sviluppato in Objective-C nei vostri progetti Swift.

  3. È ora possibile scrivere il codice Swift, utilizzando il framework FMDB. Ad esempio, il codice Swift per aprire il database, selezionare le colonne x, y, e z da una tabella chiamata test, sarebbe simile:

    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() 
    
Problemi correlati