我一直在尝试将代码初始化程序整合到模型类的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!
我的问题是为什么会发生这种情况以及如何解决这个问题。请帮帮忙,我会请托尔给你祝福
答案 0 :(得分:0)
我找到了解决方案。我在类属性let dbQueue
上使用了dbQueue
,它实际上在init()
内创建了一个具有相同名称的局部变量,使属性保持未初始化,因此nil
< / p>