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):
创建了单个视图 swift 项目。
使用 cocoapods 安装 FMDB (https://cocoapods.org/?q=fmdb)
为 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 获得。
如有任何提示或想法,请提前致谢。
这是因为 DBUtil
是 BridgingHeaderTests
目标的一部分(但应用程序委托和视图控制器不是),但该目标没有为 FMDB 配置("Objective-C Bridging Header" 测试目标的设置为空)。
您可以:
从测试目标中删除 DBUtil
:
或为测试目标指定桥接头:
我在这里留下其他情况的回复:我得到了同样的错误,但问题出在我的桥接头上我忘了写#import "FMDatabase.h"
我的情况也是同样的错误。我通过勾选 'copy items when needed' && 创建组并使其成为 .h 和 .m 文件(而不是文件夹)来修复它。然后创建obj c桥接header。
在 Target 的构建中 Phases-Link 带有库的二进制文件 - 添加了 libsqlite3.tbd。
已将嵌入内容包含 swift 代码转为是。
解决了这个引用问题。
如果你用 CocoaPods 安装了 FMDB,只需添加
import FMDB
在您使用 FMDatabase 的 swift 文件中..
我查看了所有其他出现相同错误(使用未声明类型)的帖子,但仍然无法弄清楚我的项目出了什么问题。
与其他情况的不同之处在于,我可以在 AppDelegate 和 ViewController classes 中成功使用 FMDatabase,但不能从我创建的另一个 class 中使用,尽管在与 AppDelegate 和 ViewController classes.
相同的项目"successfully use",我的意思是我可以访问其中的数据库和表。
另请注意,我无需导入任何内容即可在 AppDelegate 或 ViewController 中使用 FMDatabase。
到目前为止我做了什么 (Xcode. 6.4 Swift 1.2):
创建了单个视图 swift 项目。
使用 cocoapods 安装 FMDB (https://cocoapods.org/?q=fmdb)
为 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 获得。
如有任何提示或想法,请提前致谢。
这是因为 DBUtil
是 BridgingHeaderTests
目标的一部分(但应用程序委托和视图控制器不是),但该目标没有为 FMDB 配置("Objective-C Bridging Header" 测试目标的设置为空)。
您可以:
从测试目标中删除
DBUtil
:或为测试目标指定桥接头:
我在这里留下其他情况的回复:我得到了同样的错误,但问题出在我的桥接头上我忘了写#import "FMDatabase.h"
我的情况也是同样的错误。我通过勾选 'copy items when needed' && 创建组并使其成为 .h 和 .m 文件(而不是文件夹)来修复它。然后创建obj c桥接header。
在 Target 的构建中 Phases-Link 带有库的二进制文件 - 添加了 libsqlite3.tbd。 已将嵌入内容包含 swift 代码转为是。
解决了这个引用问题。
如果你用 CocoaPods 安装了 FMDB,只需添加
import FMDB
在您使用 FMDatabase 的 swift 文件中..