我创建了一个SQLite
表,其中包含行id integer PRIMARY KEY
。我使用this tutorial将SQLite
与我的应用集成。我正在尝试将其添加到array
Ints
。这是我的代码:
let all = "select id from \(self.tableName)"
let fullArray = self.dbManager.loadDataFromDB(all)
for currentObject in fullArray {
println(currentObject[0])
println(_stdlib_getDemangledTypeName(currentObject[0]))
self.tableViewData.append(currentObject[0] as! Int) //tableViewData is an array of Ints
}
println
陈述的结果:
2
Swift.ImplicitlyUnwrappedOptional
当我运行应用程序时,我在代码的最后一行收到以下错误。
无法将类型'__NSCFString'(0x103c93c50)的值转换为 'NSNumber'(0x103535b88)。
我做错了什么,我该如何解决?
答案 0 :(得分:0)
尝试:
self.tableViewData.append(currentObject[0].toInt())
答案 1 :(得分:0)
你确定数组中的数据都是Ints吗?我使用Flickr API遇到了类似的问题,因为print()语句显示它返回了Int值。
然而它实际上是返回String值。首先尝试转换为String,然后根据需要使用Int()转换为整数。
答案 2 :(得分:0)
请注意教程代码中的以下几行:
// Convert the column data to text (characters).
char *dbDataAsChars = (char *)sqlite3_column_text(compiledStatement, i);
所有结果都转换为字符串,这意味着数据库类型integer
未保留在结果中,您必须使用以下内容:
for currentObject in fullArray as! [String] {
// Int(currentObject[0])! in Swift 2
self.tableViewData.append(currentObject[0].toInt())
}