Swift Bridging Header - Использование необъявленного типа "FMDatabase"
Я просмотрел все другие сообщения с той же ошибкой (использование необъявленного типа), но все же не могу определить, что не так с моим проектом.
Разница с другими случаями заключается в том, что я могу успешно использовать FMDatabase в классах AppDelegate и ViewController, но не из другого класса, который я создал, хотя в том же проекте, что и классы AppDelegate и ViewController.
И "успешно использовать", я имею в виду, что я могу получить доступ к базе данных и таблицам в ней.
Также обратите внимание, что мне не нужно было импортировать что-либо для использования FMDatabase в AppDelegate или ViewController.
Пока что я сделал (Xcode. 6.4 Swift 1.2):
-
Создал единый проект быстрого просмотра.
-
Установленный FMDB с использованием cocoapods (https://cocoapods.org/?q=fmdb)
-
Создан заголовок моста для FMDB
Я могу успешно объявить и использовать FMDatabase из классов AppDelegate.swift и 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
...
В DBUtil.swift, хотя я получаю сообщение об ошибке "Использование необъявленного типа" FMDatabase ".
DBUtil.swift
class DBUtil {
var database: FMDatabase? // Error: "Use of undeclared type 'FMDatabase'
}
Репродуктор доступен в Swift Bridging Header.
Для любых подсказок или идей, спасибо заранее.
Ответы
Ответ 1
Это потому, что DBUtil
является частью целевого объекта BridgingHeaderTests
(но делегат приложения и диспетчер представлений не являются), но эта цель не настроена для FMDB (настройка "Objective-C Bridging Header" для тестовая цель пуста).
Вы можете:
Ответ 2
Я оставляю здесь ответ для других случаев: у меня такая же ошибка, но проблема была в моем заголовочном заголовке, я забыл написать #import "FMDatabase.h"
Ответ 3
Если вы установили FMDB с CocoaPods, просто добавьте
import FMDB
в быстром файле, где вы используете FMDatabase..
Ответ 4
В моем случае была та же ошибка. Я исправил это, добавив только файлы .h и .m(а не папку) для проекта, отметив "копировать элементы при необходимости" && создавать группы и создавать их. Затем созданный obj c мостовой заголовок.
В Target Build Phases-Link Binary с библиотеками - добавлен libsqlite3.tbd.
Включенный контент embed содержит быстрый код в Yes.
Он решил эту ссылочную проблему.