swift - 在 SQLite 数据库中返回行时出现 "unexpectedly found nil while unwrapping an Optional value"错误

标签 swift sqlite fmdb

我已将 FMDB Sqlite Wrapper 集成到我的 iOS 应用程序中,并且编写了几个数据库函数,到目前为止,它们都运行良好。

我对一个简单的方法使用了相同的方法,该方法应该返回结果集项中的单个元素,但出现上述错误。逻辑与其他方法没有什么不同,所以我不知道为什么会发生错误,也不知道为什么它发生在 stringForColumn 的两行上,而不是 intForColumn 的行上(正如调试器告诉我的那样)。

任何帮助或提示将不胜感激!

func fetchExercise(exerciseId: Int) -> Exercise {
    sharedInstance.database!.open()
    let resultSet: FMResultSet! = sharedInstance.database!.executeQuery("Select * from Exercises where ExerciseId = ?", withArgumentsInArray: [String(exerciseId)])
    let fetchedExercise: Exercise = Exercise()
    if (resultSet != nil) {
        fetchedExercise.exerciseId = Int(resultSet.intForColumn("ExerciseId"))
        fetchedExercise.exerciseCategory = resultSet.stringForColumn("ExerciseCategory")
        fetchedExercise.exerciseTitle = resultSet.stringForColumn("ExerciseTitle")
    }
    sharedInstance.database!.close()
    return fetchedExercise      
}

结果集如下:

最佳答案

您必须调用 resultsSet.next() 来检索结果。例如:

func fetchExercise(exerciseId: Int) -> Exercise {
    sharedInstance.database!.open()
    defer { sharedInstance.database!.close() }

    let resultSet = try! sharedInstance.database!.executeQuery("Select * from Exercises where ExerciseId = ?", values: [exerciseId])
    let fetchedExercise = Exercise()
    if resultSet.next() {
        fetchedExercise.exerciseId       = resultSet.longForColumn("ExerciseId")
        fetchedExercise.exerciseCategory = resultSet.stringForColumn("ExerciseCategory")
        fetchedExercise.exerciseTitle    = resultSet.stringForColumn("ExerciseTitle")
    }

    return fetchedExercise
}

顺便说一句,我不确定您为什么要将 exerciseId 转换为查询中的字符串。我个人只是传递 Int 值,如上所示。

关于swift - 在 SQLite 数据库中返回行时出现 "unexpectedly found nil while unwrapping an Optional value"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399966/

相关文章:

Android Sqlite 内部连接不起作用

c# - SQLite3 - "Unable to open database"

ios - 从 BLOB(FMDB 结果)转换为 NSData 对象

xcode - 为什么我在使用 Swift Cocoa App 和桥接 header 时会收到未声明的类型 'PubNub' 编译器错误?

ios - 表格单元格未正确调整大小

SQLITE3 真空, "database or disk is full"

swift - 更新表不适用于真实设备 (fmdb)

ios - DB 查询上的锁 FMDB?

ios - 快速在文本文件末尾 append 一些文本

ios - 解析 IAP 收据的 JSON