Ошибка в Singleton с использованием SQLite Swift

Когда я пытаюсь быстро получить все данные в базе данных SQLite с помощью singleton, я получаю сообщение об ошибке в sharedInstance, и извлекаются нулевые результаты.

Вот мой код:

DatabaseManager.swift

    import SQLite

class DatabaseManager {


    let shareInstance = DatabaseManager()
    let recipeTable = Table("recipes")
    let id = Expression<String>("id")
    let title = Expression<String>("title")
    let category = Expression<String>("category")
    let recipe = Expression<String>("recipe")
    let bookmark = Expression<String>("Bookmark")

    let db: Connection = {
        let path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first!
        return try! Connection("\(path)/recipe.sqlite")
    }()

    func findAll() -> Array<foodRecipe>{
        var foodRecipeArray = [foodRecipe]()

        do{
        //for row in try db.prepare(recipeTable.select(id,title,recipe,category,bookmark).filter(category == "appetizers")){
        for row in try shareInstance.db.prepare(recipeTable){
            let fd = foodRecipe()
            fd.id = row[id]
            fd.title = row[title]
            fd.recipe = row[recipe]
            fd.category = row[category]
            fd.bookmark = row[bookmark]
            foodRecipeArray.append(fd)
        }

        }
        catch let error as NSError {
            print("Error: \(error.description)")
        }
        return foodRecipeArray
    }
}

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    var foodRecipeArray: [foodRecipe]

    let dbMngr: DatabaseManager = DatabaseManager()

    foodRecipeArray = dbMngr.findAll()

    print("Food Recipe Array Count: \(foodRecipeArray.count)") //return 0


    print("Food Recipe Array: \(foodRecipeArray)") //result nil 


    // Override point for customization after application launch.
    return true


}

person MK DEV    schedule 15.11.2016    source источник


Ответы (1)


Общий экземпляр, используемый как синглтон, должен быть static

static let shareInstance = DatabaseManager()
person vadian    schedule 15.11.2016
comment
Код ошибки Bad_Exec 2 был устранен, но я не получаю массив, он все еще пуст! заражение соединения выполнено успешно, и я отлаживаю его в точке sharedInstance, они извлекают все записи, но после повторения цикла данных нет :( - person MK DEV; 15.11.2016