ios - 在 Swift 中使用 FMDB 回滚事务

标签 ios sqlite swift transactions fmdb

所以我尝试在 Swift 中使用 FMDB。就桥接头等而言,我已经把所有东西都连接好了,但我终究无法弄清楚如何在 FMDatabaseQueue 类中使用事务。具体来说,我不明白回滚事务的语法。我已经尝试了下面的代码,但它产生了一个编译时错误

'UnsafeMutablePointer<ObjCBool>' does not have a member named 'initialize'

我确信这与将指针传递到闭包中以进行回滚这一事实有关,但据我所知,您无法重新分配传递给闭包的变量,所以我不确定我是如何做到的我想设置指针以指示需要回滚。

if let queue = FMDatabaseQueue(path: DB_PATH) {
    queue.inTransaction() {
        db, rollback in

        // This could be any statement, drop table is just an example
        success = db.executeUpdate("DROP TABLE test", withArgumentsInArray:nil)

        if !success {
            // Need to rollback here
            rollback.initialize(true)
            return
        }
    }
}

我需要做什么来指示回滚?

最佳答案

在闭包中,rollback 是一个指向 bool 变量的指针 您可以使用以下方法将其设置为 true:

if !success {
    rollback.memory = true
    return
}

Swift 3 中会是

    rollback.pointee = true

关于ios - 在 Swift 中使用 FMDB 回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28485834/

相关文章:

ios - 在 swift 2.3 中将 UIImage 转换为 Base64

android - 防止作弊 : Is it really a mobile device, 还是模拟器?

sqlite - 将 SQLite 与 Qt Quick 集成

javascript - sqlite3 和 node-js 返回未定义

swift - 无法为具有 SwiftyJSON 依赖项的 Cocoa 框架运行 XCTest

iphone - 手电筒/闪光灯在保持亮起之前闪烁一次

ios - Collectionview 固定单元格间距

python - 优化存储在 SQLite 中的数据 - 如何加入多个联系人?

ios - 每次 NSTimer 递减时播放一次音频文件?

ios - 如何在 OSX 应用程序中使用核心蓝牙?