Swift无法导入Sqlite3 iOS

我将libsqlite3.0.dylib添加到我的项目中,然后尝试使用以下代码导入:

 import UIKit import sqlite3 class Dataware: NSObject { } 

但它给了我这个错误:

没有这样的模块'sqlite3'

将其添加到您的Bridging-Header.h文件中:

 #import <sqlite3.h> 

这是导入任何C语言库的主要机制。

如果您还没有Bridging-Header.h文件:

  1. 添加一个文件Bridging-Header.h(或者更典型的是(ProjectName)-Bridging-Header.h
  2. 转到您的项目的生成设置选项卡
  3. find“Objective-C桥接头”。 最简单的方法是search桥接。
  4. input您在第一步中创build的文件的名称和path。 这可能是(ProjectName)/(ProjectName)-Bridging-Header.h

当需要将sqlite添加到框架目标时,需要module.map
因为sqlite没有被映射,只是这样做:
1.在你的项目“module / module.map”中创build文件
2.从伞头创build模块:

  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 * } 

*将path中的Xcode6-Beta5.app更改为正确的一个
3.将地图文件连接到您的项目,在“构build设置”中search“导入path”,并将模块文件的完整path

我们需要将SQLite3的头文件导入到视图控制器中,以便编译器可以看到构成API的函数和其他定义。

没有办法直接将头文件导入到Swift代码中,因为SQLite3库不是作为模块打包的。

处理这个问题最简单的方法是在项目中添加一个桥接头。 一旦你有一个桥头 ,你可以添加其他头文件,这些头文件将由Swift编译器读取。 有几种方法可以添加桥接文件。 我们将使用两者中较简单的一个,即临时向项目添加一个Objective-C类。 现在就来做吧

文件➤新build➤文件….在对话框的iOS部分,selectCocoa Touch Class ,然后按下一步。 将该类命名为Temporary,将其作为NSObject的子类,将语言更改为Objective-C,然后按Next 。 在下一个屏幕中,按下创buildbutton。 当你这样做的时候,Xcode会popup一个窗口询问你是否要创build一个桥接头。 按 。 现在,在Project Navigator中,您将看到新类( Temporary.mTemporary.h )以及桥接头文件(称为SQLite Persistence-Bridging-Header.h) 。 删除Temporary.m和Temporary.h文件 – 你不再需要它们了。 select桥接头在编辑器中打开它,然后将以下行添加到它:

#import <sqlite3.h>

现在编译器可以看到SQLite3库和头文件,我们可以在ViewController.swift中编写更多的代码

而已!

嗨请按照下列步骤操作

在xcode 8.3.3中使用swift 3

  1. 转到构build阶段选项卡
  2. 转到链接二进制与库子选项卡。

    (a)点击+button添加sqlite框架,然后searchsqlite,那么你可以看到libsqlite3.0.tbd和libsqlite3.tbd

    (b)然后只selectlibsqlite3.tbd(不要同时添加,因为编译器在viewController中声明时找不到sqlite3)

  3. 然后添加Bridging-Header.h文件(因为sqlite不是用swift编写的)

  4. 桥接名称应该是您的Projectname-Bridging-Header.h文件(仅用于命名约定,不是强制性的)
  5. 在Bridging-Header文件中写入#import <sqlite3.h>
  6. 转到构build设置选项卡

    (a)在构build设置标签下searchSwift Compiler – General选项,并设置YES安装Objective-C兼容性头文件

    (b)在Objective-C桥接头选项中设置头文件的名字和path(或者你可以简单的拖动桥头文件)