Swift Bridging Header - 使用未声明类型的"FMDatabase"错误

Jac*_* G. 10 xcode objective-c ios swift xcode6.4

我看了所有其他帖子有相同的错误(使用未声明类型)但仍然无法弄清楚我的项目有什么问题.

与其他情况的不同之处在于我可以在AppDelegate和ViewController类中成功使用FMDatabase,但不能从我创建的其他类中成功使用,尽管在与AppDelegate和ViewController类相同的项目中.

通过"成功使用",我的意思是我可以访问其中的数据库和表.

另请注意,我无需导入任何内容以在AppDelegate或ViewController中使用FMDatabase.

到目前为止我做了什么(Xcode.6.4 Swift 1.2):

  1. 创建了一个单一视图swift项目.

  2. 使用cocoapods安装FMDB(https://cocoapods.org/?q=fmdb)

  3. 为FMDB创建了一个桥接头

我可以成功声明并使用AppDelegate.swift和ViewController.swift类中的FMDatabase.

AppDelegate.swift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    var database: FMDatabase? // OK
    ...
Run Code Online (Sandbox Code Playgroud)

ViewController.swift

class ViewController: UIViewController {

    var database: FMDatabase? // OK
    ...
Run Code Online (Sandbox Code Playgroud)

在DBUtil.swift虽然我得到"使用未声明的类型'FMDatabase'"错误.

DBUtil.swift

class DBUtil {

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

}
Run Code Online (Sandbox Code Playgroud)

Swift Bridging Header提供复制.

如有任何提示或想法,请提前感谢您.

Rob*_*Rob 17

这是因为它DBUtilBridgingHeaderTests目标的一部分(但是app委托和视图控制器不是),但是没有为FMDB配置该目标(测试目标的"Objective-C Bridging Header"设置为空).

你可以:

  1. DBUtil从测试目标中删除:

    在此输入图像描述

  2. 或者为测试目标指定桥接头:

    在此输入图像描述