SQLite.swift с swift 2.0 в Xcode 7.0
Я недавно обновился до Xcode 7.0 и пытаюсь построить свой проект, который использует библиотеку SQLite.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
Может кто-нибудь помочь?
1 ответ
#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)