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

Swift Bridging Header - Use of undeclared type 'FMDatabase' error

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

与其他情况的不同之处在于,我可以在 AppDelegate 和 ViewController classes 中成功使用 FMDatabase,但不能从我创建的另一个 class 中使用,尽管在与 AppDelegate 和 ViewController classes.

相同的项目

"successfully use",我的意思是我可以访问其中的数据库和表。

另请注意,我无需导入任何内容即可在 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 classes 中成功声明和使用 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 获得。

如有任何提示或想法,请提前致谢。

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

您可以:

  1. 从测试目标中删除 DBUtil

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

我在这里留下其他情况的回复:我得到了同样的错误,但问题出在我的桥接头上我忘了写#import "FMDatabase.h"

我的情况也是同样的错误。我通过勾选 'copy items when needed' && 创建组并使其成为 .h 和 .m 文件(而不是文件夹)来修复它。然后创建obj c桥接header。

在 Target 的构建中 Phases-Link 带有库的二进制文件 - 添加了 libsqlite3.tbd。 已将嵌入内容包含 swift 代码转为是。

解决了这个引用问题。

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

import FMDB

在您使用 FMDatabase 的 swift 文件中..