2014-06-05 15 views
22

ho aggiunto libsqlite3.0.dylib al mio progetto, e poi ho cercato di importare utilizzando il seguente codice:Swift Non è possibile importare Sqlite3 iOS

import UIKit 
import sqlite3 

class Dataware: NSObject 
{ 

} 

Ma mi sta dando questo errore:

No Such Module 'sqlite3'

risposta

44

Aggiungere al file Bridging-header.h:

#import <sqlite3.h> 

Questo è il meccanismo principale per l'importazione di qualsiasi libreria in linguaggio C.

Se non si dispone ancora di un file Bridging-header.h:

  1. aggiungere un file Colmare-header.h (o più tipicamente (ProjectName) -Bridging-header.h
  2. Go alla scheda impostazioni di generazione per il progetto
  3. Find "Objective-C bridging Header". il modo più semplice è quello di cercare per colmare.
  4. Immettere il nome e il percorso per il file creato nel passaggio uno. e 'probabilmente (ProjectName)/(ProjectName) -Bridging-Header.h
+0

Dove aggiungo questo al mio progetto? – PREMKUMAR

+0

Ho aggiunto questo file e ho importato sqlite3.h ma per .swift uso var dbsql = sqlite3() questa riga. ma l'errore "sqite3" dell'identificatore non risolto è arrivato – PREMKUMAR

7

quando si desidera aggiungere SQLite per quadro bersaglio, module.map è necessario
poiché SQLite non è mappata, e per farlo basta:
1. creare il file nel progetto 'modulo/module.map '
2. creare il modulo dalla testata ombrello:

module sqlite3 [system] { 
     header "/Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/include/sqlite3.h" 
     link "sqlite3" 
     export * 
    } 

* cambiare il Xcode6-Beta5.app nel percorso a destra uno
3. collegare il file di mappa si proietta, ricerca di' import percorsi 'in' Build Settings 'e inserisci il percorso completo al file di modulo

+0

questa soluzione ha funzionato per me quando ho provato ad aggiungere sqlite al mio framework rapido – Ben

+0

Ciao @ben. Potresti per favore elaborare la tua risposta. Non sto ottenendo come aggiungere un nuovo modulo –

+1

Ciao @RatikantaPatra, per aggiungere una nuova mappa del modulo, è necessario: [1] creare un file chiamato module.map [2] aggiungere le informazioni del modulo desiderato (come nella mia risposta) [3 ] in Xcode Vai a Build Settings-> imposta Swift Compiler-> Search Paths-> Import Paths nella directory in cui hai inserito il modulo.map file in – Ben

5

Abbiamo bisogno di importare i file di intestazione per SQLite3 nel controller di visualizzazione in modo che il compilatore possa vedere la funzione e altre definizioni che compongono l'API.

Non esiste alcun modo per importare direttamente il file di intestazione nel codice Swift, poiché la libreria SQLite3 non è pacchettizzata come modulo.

Il modo più semplice per risolvere questo problema è aggiungere un'intestazione di bridging al progetto. Una volta che hai un'intestazione di collegamento , puoi aggiungere altri file di intestazione e quei file di intestazione verranno letti dal compilatore Swift. Ci sono un paio di modi per aggiungere un file di bridging. Useremo il più semplice dei due, che è quello di aggiungere temporaneamente una classe Objective-C al progetto. Facciamolo ora.

File ➤ File Nuovo ➤ .... Nella sezione iOS della finestra di dialogo, scegliere Cocoa Touch Classe e premere Avanti. Denominare la classe Temporary, renderla una sottoclasse di NSObject, cambiare la lingua in Objective-C e premere Avanti. Nella schermata successiva, premi il pulsante Crea. Quando si esegue questa operazione, Xcode mostrerà una finestra che chiede se si desidera creare un'intestazione di collegamento. Premere . Ora, nella navigazione di progetto, vedrete i file per la nuova classe (Temporary.m e Temporary.h) e l'intestazione ponte, che si chiama SQLite Persistenza-Bridging-header.h. Elimina i file Temporary.m e Temporary.h: non ti servono più. Selezionare l'intestazione colmare per aprirla nell'editor e quindi aggiungere la seguente riga a esso:

#import < sqlite3.h>

Ora che il compilatore può vedere la biblioteca SQLite3 e l'intestazione file, possiamo scrivere un po 'di codice nella ViewController.swift

Questo è tutto!

3

Hi Si prega di attenersi alla seguente procedura

in Xcode 8.3.3 utilizzando rapida 3

  1. Vai costruire Fasi scheda
  2. Vai a Link binario con le librerie scheda sub.

    (a) Fare clic pulsante + per aggiungere quadro SQLite quindi cercare SQLite allora si può vedere libsqlite3.0.tbd e libsqlite3.tbd

    (b) Quindi selezionare solo libsqlite3.tbd (Non aggiungere sia perché il compilatore non riesce a trovare stuct sqlite3 quando si dichiara in viewController)

  3. Poi Aggiungere file di Bridging-header.h (perché SQLite non è scritto in rapida)

  4. nome Bridging dovrebbe essere la vostra Nomeprogetto-Bridging-Header File .h (solo per convenzione di denominazione, non obbligatorio)
  5. Scrivi #import <sqlite3.h> nel file Bridging-Header
  6. Vai a costruire impostazioni scheda

    (a) Sotto la ricerca scheda impostazioni di generazione per Swift Compiler - opzione Generale e impostare YES a Installare Header compatibilità Objective-C

    (b) Impostare il proprio nome e il percorso del file di intestazione in Objective-C opzione bridging Header (Oppure si può semplicemente trascinare il file di intestazione bridging)

0.123.
Problemi correlati