Подтвердить что ты не робот

SQLITE_TRANSIENT undefined в Swift

Я использую xcode 6, и я импортировал libsqlite3.dylib и libsqlite3.0.dylib. Я также добавил файл Bridging-Header.h file witch import sqlite3.h

Я могу открыть базу данных SQLite и выполнять простые операции, такие как insert select...

С if (sqlite3_bind_text(compiledStatement, 2, Name.cStringUsingEncoding(NSUTF8StringEncoding), -1, SQLITE_TRANSIENT) != SQLITE_OK)

У меня есть ошибка: Use of unresolved identifier 'SQLITE_TRANSIENT'

Что я показываю? Я новичок в Swift, это мой первый вопрос о Stack, PLS, кто-нибудь мне помогает!

4b9b3361

Ответ 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)

(взято из "Helpers.swift" из ветки Swift 2 проекта SQLite.swift).

Обновление для Swift 3:

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