SQLite.swift with swift 2.0 in Xcode 7.0



我最近更新到Xcode 7.0,我试图构建我的项目,使用SQLite.swift库。转换为最新的swift语法后(编辑->转换->到最新的swift语法…)我有这么多的错误,我不知道从哪里开始修复它们。我还尝试单独转换SQLite.swift项目,但总是在编译时得到许多警告和一些错误,如:

/Users/dobrev/Development/iOS/SQLite.swift/SQLite/Statement.swift:25:30: error: cannot invoke initializer for type 'sqlite3_destructor_type' with an argument list of type '(COpaquePointer)'
internal let SQLITE_STATIC = sqlite3_destructor_type(COpaquePointer(bitPattern: 0))
                             ^
/Users/dobrev/Development/iOS/SQLite.swift/SQLite/Statement.swift:26:33: error: cannot invoke initializer for type 'sqlite3_destructor_type' with an argument list of type '(COpaquePointer)'
internal let SQLITE_TRANSIENT = sqlite3_destructor_type(COpaquePointer(bitPattern: -1))

,最终得到Command failed due to signal: Segmentation fault 11

有人能帮忙吗?

#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
<sqlite3.h>中的

没有导入到Swift,可能是由于"不安全"的指针强制转换。

一个可能的Swift定义在SQLite.swift项目中显示,在Statement.swift:

let SQLITE_STATIC = sqlite3_destructor_type(COpaquePointer(bitPattern: 0))
let SQLITE_TRANSIENT = sqlite3_destructor_type(COpaquePointer(bitPattern: -1))

对于Swift 2,你需要

let SQLITE_STATIC = unsafeBitCast(0, sqlite3_destructor_type.self)
let SQLITE_TRANSIENT = unsafeBitCast(-1, sqlite3_destructor_type.self)

最新更新