我使用stephencelis的SQLite框架
我的问题是这些命令只能在viewDidLoad()中使用。
但是我必须在viewDidLoad之外的函数中使用定义的变量(例如var carlist)。
我的逻辑问题在哪里?
我的代码被剪掉了:

    override func viewDidLoad() {
     super.viewDidLoad()
     let db = Database("/Users/**/Desktop/NEW/car/car.sqlite")
     let cars = db["cars"]
     let car_id = Expression<Int64>("car_id")
     let car_model = Expression<String?>("car_model")

     for car_list in cars {
        println("car_model: \(car_list[car_model])")
        var carlist[car_list[car_model]] // array
     }
    }

如果我将“let db”后面的行移到外部:“ViewController.Type”没有名为“db”的成员,则会出现错误

最佳答案

问题是,您在viewDidLoad方法中声明了变量,而Swift没有看到该变量。您必须在这样的方法之外声明它:

class YourClass{
 //The DB-declaration
 let db = Database("/Users/**/Desktop/NEW/car/car.sqlite")

    override func viewDidLoad() {
     super.viewDidLoad()

     let cars = db["cars"]
     let car_id = Expression<Int64>("car_id")
     let car_model = Expression<String?>("car_model")

     for car_list in cars {
        println("car_model: \(car_list[car_model])")
        var carlist[car_list[car_model]] // array
     }
    }

}

如您所见,我在任何函数之外声明了变量。这样你就可以从你班里的任何地方进入。有不同种类的变量。你可以这样看:

07-26 09:34