SQLITE_TRANSIENT 在 Swift 中未定义 [英] SQLITE_TRANSIENT undefined in Swift

查看:19
本文介绍了SQLITE_TRANSIENT 在 Swift 中未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是 xcode 6 并且我已经导入了 libsqlite3.dyliblibsqlite3.0.dylib.我还添加了 Bridging-Header.h 文件女巫导入 sqlite3.h

I'm using xcode 6 and I've imported libsqlite3.dylib and libsqlite3.0.dylib. I've also added the Bridging-Header.h file witch imports sqlite3.h

我可以打开SQLite数据库,做一些简单的操作,比如插入选择...

I can open SQLite database and do simple operations like insert select...

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

我有一个错误:Use of unresolved identifier 'SQLITE_TRANSIENT'

我做什么节目?我是 Swift 新手,这是我在 Stack 上的第一个问题,请有人帮助我!

What show I do? I'm new in Swift, it's my first question on Stack, pls somebody help me!

推荐答案

定义

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

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

from <sqlite3.h> are not imported to Swift, probably due to the "unsafe" pointer casting.

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

A possible Swift definition is shown in the SQLite.swift project, in 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" 来自 SQLite.swift 项目的 Swift 2 分支).

(taken from "Helpers.swift" from the Swift 2 branch of the SQLite.swift project).

Swift 3 的更新:

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

这篇关于SQLITE_TRANSIENT 在 Swift 中未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆