FMDatabaseQueue没有在类init()中幸存

时间:2015-02-13 22:07:54

标签: ios swift fmdb

我一直在尝试将代码初始化程序整合到模型类的init()函数中,我喜欢这样:

 init?() {
    let docsDir =     NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let dbPath = docsDir.stringByAppendingPathComponent("app.sqlite")
    let dbQueue = FMDatabaseQueue(path: dbPath)

    if dbQueue == nil {
        NSLog("%@ : %@", "Problem connecting to the db at", __FUNCTION__)
        return nil
    } else {
        NSLog("%@", "Successfully connected to the db")
    }
}

当我尝试使用该类其他功能的dbQueue时,dbQueue总是等于nil

 func anotherFunction() {
   dbQueue?.inDatabase{ db in .... }
 }

所以当我尝试初始化时:

 let db = dbConnector()
 db.anotherFunc() // Zilch!

我的问题是为什么会发生这种情况以及如何解决这个问题。请帮帮忙,我会请托尔给你祝福

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我在类属性let dbQueue上使用了dbQueue,它实际上在init()内创建了一个具有相同名称的局部变量,使属性保持未初始化,因此nil < / p>