Ios Swift桥接头-使用未声明的类型';FMDatabase';错误

Ios Swift桥接头-使用未声明的类型';FMDatabase';错误,ios,objective-c,xcode,swift,xcode6.4,Ios,Objective C,Xcode,Swift,Xcode6.4,我已经看过了所有其他有相同错误的帖子(使用未声明的类型),但仍然无法找出我的项目有什么问题 与其他情况不同的是,我可以在AppDelegate和ViewController类中成功使用FMDatabase,但不能从我创建的另一个类中使用,尽管它与AppDelegate和ViewController类在同一个项目中 所谓“成功使用”,我的意思是我可以访问其中的数据库和表 还请注意,在AppDelegate或ViewController中使用FMDatabase不需要导入任何内容 到目前为止,我所做

我已经看过了所有其他有相同错误的帖子(使用未声明的类型),但仍然无法找出我的项目有什么问题

与其他情况不同的是,我可以在AppDelegate和ViewController类中成功使用FMDatabase,但不能从我创建的另一个类中使用,尽管它与AppDelegate和ViewController类在同一个项目中

所谓“成功使用”,我的意思是我可以访问其中的数据库和表

还请注意,在AppDelegate或ViewController中使用FMDatabase不需要导入任何内容

到目前为止,我所做的工作(Xcode.6.4 Swift 1.2):

  • 创建了一个单视图swift项目

  • 使用cocoapods()安装的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'
    
    }
    
    有一台复印机可供选择


    对于任何提示或想法,请提前感谢。

    这是因为
    DBUtil
    BridgingHeaderTests
    目标的一部分(但应用程序代理和视图控制器不是),但该目标未配置为FMDB(测试目标的“Objective-C桥接头”设置为空)

    您可以:

  • 从测试目标中删除
    DBUtil

  • 或指定测试目标的桥接标头:


  • 对于其他情况,我在这里留下了一个答复:我得到了相同的错误,但问题是在我的桥接头中,我忘了编写
    #import“FMDatabase.h”

    我的情况也是相同的错误。我通过勾选“需要时复制项目”&&creategroups和make将.h和.m文件(而不是文件夹)添加到project中来修复它。然后创建obj c桥接头

    在Target的构建阶段,将二进制文件链接到库中—添加了libsqlite3.tbd。 将“嵌入内容包含swift代码”设置为“是”


    它解决了这个参考问题。

    如果您使用CocoaPods安装了FMDB,只需添加

    import FMDB
    

    在使用FMDatabase的swift文件中..

    您是否尝试过显式导入语句?另外,是否将DBUtil添加到同一目标?只是一些想法…@RomanSausarnes谢谢你的评论。我确实尝试导入,但仍然找不到要导入的内容。还要注意的是,我不需要导入任何东西就可以从AppDelegate或ViewController访问它。是的,DBUtil与AppDelegate和ViewController在同一个项目中,所以它应该是同一个目标,除非我遗漏了什么。文件可以有不同的目标,即使它们在同一个项目中。通过右侧可滑动面板中的inspector选项卡查看一些复选框,这些复选框指示已将其添加到哪些目标,只是为了确定。这肯定能解释你所看到的行为。罗布:没错!!!!非常感谢。教训:桥接头必须添加到测试目标中(当然,在适当的时候),但要记住一些事情。第2个问题解决了我的问题,Swift没有识别obj CUnbelievable,我也有同样的问题。My DatabaseHelper.swift文件有两个不同的目标成员身份,一个是无意的。一直以来,我都在想,我的构建设置可能遗漏了一些东西:/Hi,George,我有一个类似的问题,那就是
    AMSmoothAlert
    (安装在Pods中),那么我如何让它在swift中使用呢?