使用FMDB在Swift中回滚事务

Mat*_* C. 2 sqlite transactions fmdb ios swift

所以我试图在Swift中使用FMDB.就连接标题等我而言,我所有的东西都很好,但我不能为我的生活弄清楚如何在FMDatabaseQueue课堂上使用交易.具体来说,我不理解回滚事务的语法.我已经尝试了下面的代码,但它产生的编译时错误

'UnsafeMutablePointer<ObjCBool>' does not have a member named 'initialize'
Run Code Online (Sandbox Code Playgroud)

我确定这与指针被传递到闭包中进行回滚这一事实有关,但据我所知,你不能重新分配传递给swift中的闭包的变量,所以我不确定我是怎么想的设置指针以指示需要回滚.

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

表示回滚需要做什么?

Mar*_*n R 5

在闭包内,rollback是一个指向布尔变量的指针,您可以将其设置为true:

if !success {
    rollback.memory = true
    return
}
Run Code Online (Sandbox Code Playgroud)

Swift 3中它会是

    rollback.pointee = true
Run Code Online (Sandbox Code Playgroud)