create Swift non può importare iOS Sqlite3




sqlite swift date (4)

Ho aggiunto libsqlite3.0.dylib al mio progetto, e poi ho provato a importare usando il seguente codice:

import UIKit
import sqlite3

class Dataware: NSObject
{

}

Ma mi sta dando questo errore:

Nessun modulo di questo tipo 'sqlite3'


Answer #1

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 è possibile 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 bridging , puoi aggiungere altri file di intestazione e quei file di intestazione saranno 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 ➤ Nuovo ➤ File .... Nella sezione iOS della finestra di dialogo, selezionare Cocoa Touch Class e premere Avanti. Denominare la classe Temporary, renderla una sottoclasse di NSObject , cambiare la lingua in Objective-C e premere Next . Nella schermata successiva, premi il pulsante Crea . Quando lo fai, Xcode mostrerà una finestra che ti chiederà se vuoi creare un'intestazione di bridging. Premere . Ora, nel Navigatore di progetto, vedrai i file per la nuova classe ( Temporary.m e Temporary.h ) e l'intestazione di bridging, che si chiama SQLite Persistence-Bridging-Header.h . Elimina i file Temporary.m e Temporary.h: non ti servono più. Seleziona l' intestazione di bridging per aprirla nell'editor, quindi aggiungi la seguente riga:

#import <sqlite3.h>

Ora che il compilatore può vedere la libreria SQLite3 ei file di intestazione, possiamo scrivere altro codice in ViewController.swift

Questo è tutto!


Answer #2

Ciao, segui questi passaggi

In xcode 8.3.3 utilizzando swift 3

  1. Vai alla scheda Fasi di creazione
  2. Vai alla sottoscheda Collega binario con librerie.

    (a) Fare clic sul pulsante + per aggiungere il framework sqlite, quindi cercare sqlite, quindi è possibile vedere libsqlite3.0.tbd e libsqlite3.tbd

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

  3. Quindi aggiungi il file Bridging-Header.h (perché sqlite non è scritto in swift)

  4. Il nome del ponte deve essere il file Projectname-Bridging-Header.h (solo per la convenzione di denominazione, non obbligatorio)
  5. Scrivi #import <sqlite3.h> nel tuo file Bridging-Header
  6. Vai alla scheda delle impostazioni di costruzione

    (a) Nella scheda delle impostazioni di compilazione, cercare Swift Compiler - Opzione generale e impostare YES per installare l'intestazione della compatibilità Objective-C

    (b) Imposta il tuo nome e il percorso per il file di intestazione in Objective-C Bridging Header (Oppure puoi semplicemente trascinare il file di intestazione del bridging)


Answer #3

Aggiungilo al tuo file Bridging-Header.h:

#import <sqlite3.h>

Questo è il meccanismo principale per importare qualsiasi libreria in linguaggio C.

Se non hai ancora un file Bridging-Header.h:

  1. Aggiungi un file Bridging-Header.h (o più tipicamente (ProjectName) -Bridging-Header.h
  2. Vai alla scheda delle impostazioni di compilazione per il tuo progetto
  3. Trova "Intestazione Bridging Objective-C". Il modo più semplice è cercare un collegamento.
  4. Immettere il nome e il percorso per il file creato nel passaggio uno. È probabilmente (ProjectName) / (ProjectName) -Bridging-Header.h

Answer #4

quando si desidera aggiungere sqlite al framework target, è necessario module.map
poiché sqlite non è mappato, e per farlo solo:
1. crea un file nel tuo progetto 'module / module.map'
2. crea il modulo dall'intestazione dell'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 *
    }

* cambia Xcode6-Beta5.app nel percorso a destra
3. collega il file della mappa al progetto, cerca "percorsi di importazione" in "Impostazioni build" e inserisci il percorso completo del file del modulo





swift