我看了所有其他帖子都有同样的错误(使用未申报的类型),但仍然无法弄清楚我的项目有什么问题。
与其他情况的不同之处在于,我可以在AppDelegate和ViewController类中成功使用FMDatabase,但不能从我创建的其他类中成功使用,但在与AppDelegate和ViewController类相同的项目中。
通过"成功使用",我的意思是我可以访问其中的数据库和表格。
另请注意,我无需导入任何内容即可在AppDelegate或ViewController中使用FMDatabase。
到目前为止我做了什么(Xcode.6.4 Swift 1.2):
创建了一个单一的swift项目。
使用cocoapods安装FMDB(https://cocoapods.org/?q=fmdb)
为FMDB创建了一个桥接标题
我可以从AppDelegate.swift和ViewController.swift类成功声明和使用FMDatabase。
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可以使用复制器。
对于任何提示或想法,请提前感谢。
答案 0 :(得分:17)
这是因为DBUtil
是BridgingHeaderTests
目标的一部分(但是app委托和视图控制器不是),但是没有为FMDB配置该目标(“Objective-C桥接标题” “测试目标的设置为空”。
你可以:
答案 1 :(得分:1)
我在这里留下了对其他案件的回复:我得到了同样的错误,但问题出在我的桥接标题中我忘了写#import "FMDatabase.h"
答案 2 :(得分:1)
如果您使用CocoaPods安装了FMDB,只需添加
即可import FMDB
在你正在使用FMDatabase的swift文件中。
答案 3 :(得分:0)
我的情况是同样的错误。我通过添加.h和.m文件(不是文件夹)来修复它,通过勾选“需要时复制项目”和&&创建组并成功。然后创建了obj c桥接头。
在Target的构建阶段 - 链接二进制文件库 - 添加了libsqlite3.tbd。 转为嵌入内容包含快速代码为是。
它解决了这个参考问题。