J’ai examiné tous les autres articles avec la même erreur (utilisation de type non déclaré), mais je n’arrive toujours pas à comprendre ce qui ne va pas avec mon projet.
La différence avec les autres cas est que je peux utiliser avec succès FMDatabase dans les classes AppDelegate et ViewController, mais pas à partir d'une autre classe que j'ai créée, bien que dans le même projet que les classes AppDelegate et ViewController.
Et par "utiliser avec succès", je veux dire que je peux accéder à la base de données et aux tables qu’elle contient.
Notez également que je n’ai rien importé pour utiliser FMDatabase dans AppDelegate ou ViewController.
Jusqu'ici ce que j'ai fait (Xcode. 6.4 Swift 1.2):
Création d'un projet Swift à vue unique.
FMDB installé à l'aide de cocoapods ( https://cocoapods.org/?q=fmdb )
Création d'un en-tête de pontage pour FMDB
Je peux avec succès déclarer et utiliser FMDatabase à partir des classes AppDelegate.Swift et ViewController.Swift.
AppDelegate.Swift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var database: FMDatabase? // OK
...
ViewController.Swift
class ViewController: UIViewController {
var database: FMDatabase? // OK
...
Dans DBUtil.Swift, j’obtiens cependant l’erreur «Utilisation du type non déclaré‘ FMDatabase ’».
DBUtil.Swift
class DBUtil {
var database: FMDatabase? // Error: "Use of undeclared type 'FMDatabase'
}
Un reproducteur est disponible à l'adresse suivante: Swift Bridging Header .
Pour toutes astuces ou idées, merci d'avance.
C'est parce que DBUtil
fait partie de la cible BridgingHeaderTests
(mais que le délégué de l'application et le contrôleur de vue ne le sont pas), mais que cette cible n'est pas configurée pour FMDB (le paramètre "Objective-C Bridging Header" pour la cible de test est vide).
Tu peux soit:
Je laisse ici une réponse pour les autres cas: j'ai eu la même erreur, mais le problème était dans mon en-tête de pontage j'ai oublié d'écrire #import "FMDatabase.h"
Si vous avez installé FMDB avec CocoaPods, ajoutez simplement
import FMDB
dans le fichier Swift où vous utilisez FMDatabase ..
Mon cas était la même erreur. Je l'ai corrigé en ajoutant uniquement les fichiers .h et .m (pas le dossier) à projeter en cochant «Copier les éléments si nécessaire» et créer des groupes et le faire. Ensuite, créé obj c en-tête de pontage.
Sur la construction cible Phases-Link binary with Libraries- Ajouté libsqlite3.tbd. Le contenu incorporé tourné contient du code Swift sur Oui.
Il a résolu ce problème de référence.