gpt4 book ai didi

Swift FMResultSet nil/获取行数

转载 作者:行者123 更新时间:2023-11-30 13:24:16 26 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序可以在没有可用连接的情况下从互联网提取数据,并有一个本地数据库来存储该数据。

我可以很好地在数据库中存储和提取数据,但我似乎无法获取数据库中项目的数量。

这是我的代码:

func getCount(tableName:String) -> Int {
let sql = "SELECT COUNT(id) FROM " + tableName
print(sql) // <---- prints out the complete SQL, works fine
let resultSet: FMResultSet! = sharedInstance.database!.executeQuery(sql, withArgumentsInArray: nil)
var count = 0
if resultSet != nil {
print("Database not empty")
while resultSet.next() {
count += 1
}
return count
} else {
return 0
}
}

问题

不幸的是,似乎连我的 getCount函数不起作用,因为它总是返回 0。它甚至不会超过 if resultSet != nil部分。

是的,数据库表中至少有一项,手动将该查询放入 SQLiteBrowser 即可获得结果。

我做错了什么?

最佳答案

你做错的是忽略了错误处理。

看看你的代码:哪些代码路径可以让你的函数返回 0?

有两个:

  1. 有一个resultSet,resultSet.next()方法返回nil(表示没有行)
  2. 没有 resultSet(这意味着数据库错误)。

由于 SELECT COUNT(id) 语句无法返回任何行,这意味着您遇到了数据库错误。

由于你忽略了它(通过返回 0),你不知道会发生什么,而你就在堆栈溢出时毫 headless 绪。

简而言之:处理错误。

关于Swift FMResultSet nil/获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com