如何在swift中将回调函数传递给sqlite3_exec?

use*_*355 5 sqlite list swift

如何将回调函数传递给sqlite3_execSwift?

sqlite_str = sqlite_str + "\(sqlite_property_str))";

var str:NSString = sqlite_str;

var sqlite:COpaquePointer = share().sqlite3_db;
var errmsg:UnsafePointer<Int8> = nil

let rc = sqlite3_exec(sqlite, str.cStringUsingEncoding(NSUTF8StringEncoding), <#callback: CFunctionPointer<((UnsafePointer<()>, Int32, UnsafePointer<UnsafePointer<Int8>>, UnsafePointer<UnsafePointer<Int8>>) -> Int32)>#>, <#UnsafePointer<()>#>, <#errmsg: UnsafePointer<UnsafePointer<Int8>>#>)
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 0

这是(目前)不可能的。Xcode 6 beta 4 发行说明指出:

但是,您不能调用 C 函数指针或将闭包转换为 C 函数指针类型。

作为解决方法,您可以将sqlite3_exec其回调放在一个 C 包装函数中,并从 Swift 中调用它。