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

誰か助けてくれませんか?

4

1 に答える 1

0
#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)

from<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)
于 2016-05-09T03:19:51.353 に答える