【发布时间】:2014-07-26 18:46:36
【问题描述】:
我在我的项目中添加了libsqlite3.0.dylib,然后我尝试使用以下代码导入:
import UIKit
import sqlite3
class Dataware: NSObject
{
}
但它给了我这个错误:
没有这样的模块'sqlite3'
【问题讨论】:
我在我的项目中添加了libsqlite3.0.dylib,然后我尝试使用以下代码导入:
import UIKit
import sqlite3
class Dataware: NSObject
{
}
但它给了我这个错误:
没有这样的模块'sqlite3'
【问题讨论】:
将其添加到您的 Bridging-Header.h 文件中:
#import <sqlite3.h>
这是导入任何 C 语言库的主要机制。
如果您还没有 Bridging-Header.h 文件:
【讨论】:
当想要将 sqlite 添加到 framework 目标时,需要 module.map
因为 sqlite 没有被映射,所以这样做只是:
1. 在您的项目“module/module.map”中创建文件
2. 从伞头创建模块:
module sqlite3 [system] {
header "/Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/include/sqlite3.h"
link "sqlite3"
export *
}
*将路径中的Xcode6-Beta5.app改成右边的
3. 将映射文件连接到您的项目,在“构建设置”中搜索“导入路径”并输入模块文件的完整路径
【讨论】:
MODULEMAP_FILE 路径。有关示例,请参见 my answer to another question 或我的 SQLite.swift 框架(在 swift-1-2 分支上)。
我们需要将 SQLite3 的头文件导入视图控制器,以便编译器可以看到构成 API 的函数和其他定义。
没有办法直接将头文件导入Swift代码,因为SQLite3库没有打包成模块。
解决这个问题的最简单方法是在项目中添加一个桥接头。一旦你有了桥接头,你可以添加其他头文件,Swift 编译器会读取这些头文件。有几种方法可以添加桥接文件。我们将使用两者中更简单的一个,即临时将一个 Objective-C 类添加到项目中。现在就开始吧。
File ➤ New ➤ File.... 在对话框的 iOS 部分,选择 Cocoa Touch 类,然后按下一步。将类命名为 Temporary,使其成为 NSObject 的子类,将语言更改为 Objective-C,然后按 Next。在下一个屏幕中,按 创建 按钮。 当你这样做时,Xcode 会弹出一个窗口询问你是否要创建一个桥接头。按是。 现在,在 Project Navigator 中,您将看到新类(Temporary.m 和 Temporary.h)的文件和名为 SQLite 的桥接头 Persistence-Bridging-Header.h。删除 Temporary.m 和 Temporary.h 文件——你不再需要它们了。选择 bridging header 在编辑器中打开它,然后在其中添加以下行:
#import
现在编译器可以看到 SQLite3 库和头文件,我们可以在 ViewController.swift
中编写更多代码就是这样!
【讨论】:
您好,请按照以下步骤操作
在 xcode 8.3.3 中使用 swift 3
转到 Link Binary with Libraries 子选项卡。
(a) 点击+按钮添加sqlite框架然后搜索sqlite可以看到libsqlite3.0.tbd和libsqlite3.tbd
(b) 然后只选择libsqlite3.tbd(不要同时添加,因为在viewController中声明时编译器找不到sqlite3 stuct)
然后添加 Bridging-Header.h 文件(因为sqlite不是swift写的)
#import <sqlite3.h>
转到构建设置选项卡
(a) 在构建设置选项卡下搜索 Swift Compiler - General 选项并将YES 设置为 Install Objective-C compatible Header
(b) 在Objective-C Bridging Header选项中设置你的头文件名称和路径(或者你可以简单地拖动桥接头文件)
【讨论】: