Swift Bridging Header-использование ошибки необъявленного типа " FMDatabase

Я просмотрел все другие сообщения с той же ошибкой (использование необъявленного типа), но до сих пор не могу понять, что не так с моим проектом.

разница с другими случаями заключается в том, что я могу успешно использовать FMDatabase в классах AppDelegate и ViewController, но не из другого класса, который я создал, хотя и в том же проекте, что и классы AppDelegate и ViewController.

и "успешно использовать", я имею в виду, что я могу получить доступ к базе данных и таблицам в он.

также обратите внимание, что мне не нужно было ничего импортировать для использования FMDatabase в AppDelegate или ViewController.

до сих пор то, что я сделал (Xcode. 6.4 Swift 1.2):

  1. создан проект swift с одним представлением.

  2. установлен FMDB с помощью cocoapods (https://cocoapods.org/?q=fmdb)

  3. создан заголовок моста для FMDB

Я могу успешно объявите и используйте FMDatabase из AppDelegate.swift и ViewController.быстрые занятия.

AppDelegate.Свифт!--4-->

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    var database: FMDatabase? // OK
    ...

ViewController.Свифт!--4-->

class ViewController: UIViewController {

    var database: FMDatabase? // OK
    ...

В DBUtil.swift, хотя я получаю ошибку" использование необъявленного типа "FMDatabase"".

DBUtil.Свифт!--4-->

class DBUtil {

    var database: FMDatabase? // Error: "Use of undeclared type 'FMDatabase'

}

репродуктор доступен по адресу Стремительный Наводя Заголовок.

за любые подсказки или идеи, заранее спасибо.

4 ответов


потому что DBUtil является частью BridgingHeaderTests target (но делегат приложения и контроллер представления не являются), но эта цель не настроена для FMDB (параметр "Objective-C Bridging Header" для тестовой цели пуст).

вы можете:

  1. удалить DBUtil из теста target:

    enter image description here

  2. или укажите заголовок моста для тестов цель:

    enter image description here


Я оставляю здесь ответ для других случаев: я получил ту же ошибку, но проблема была в моем заголовке моста, я забыл написать #import "FMDatabase.h"


Если вы установили FMDB с CocoaPods, просто добавьте

import FMDB

в файле swift, где вы используете FMDatabase..


мой случай был такой же ошибкой. Я исправил это, добавив только the .h и .m файлов (не папка) для проекта, отметив "копировать элементы, когда это необходимо" & & создать группы и сделал это . Затем создан заголовок моста obj c.

на этапах сборки Target-Link Binary с библиотеками-добавлен libsqlite3.Подлежит определению. Turned embed content содержит swift-код на Yes.

это решило эту справочную проблему.