所以我正在尝试在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是指向布尔变量的指针
您可以使用以下命令将其设置为true:

if !success {
    rollback.memory = true
    return
}

Swift 3 中,它将是
    rollback.pointee = true

10-07 22:22