我正在尝试从sqlite读取blob数据,但我收到Extra argument 'bytes' in call
错误。
这是我的代码:
var len = sqlite3_column_bytes(compiledStatement, 0)
var point = sqlite3_column_blob(compiledStatement, 0)
var dbData:NSData? = NSData(bytes: point, length: len)// ERROR: Extra argument 'bytes' in call
if dbData != nil
{
arrDataRow.addObject(dbData!)
}
答案 0 :(得分:6)
sqlite3_column_bytes
会返回Int32
,但是
NSData(bytes:, length: )
期望Int
作为第二个参数,
因此,您必须明确转换该值:
let dbData = NSData(bytes: point, length: Int(len))
另请注意,此NSData
初始化程序不返回可选项,
所以将它分配给var dbData:NSData?
没有多大意义,
即便如此,dbData
永远不会是nil
。
你能做什么
是检查sqlite3_column_blob()
是否返回nil
:
let len = sqlite3_column_bytes(compiledStatement, 0)
let point = sqlite3_column_blob(compiledStatement, 0)
if point != nil {
let dbData = NSData(bytes: point, length: Int(len))
// ...
}
答案 1 :(得分:0)
在Swift 4.2中
if let dataBlob = sqlite3_column_blob(albumQueryPointer, 0){
let dataBlobLength = sqlite3_column_bytes(albumQueryPointer, 0)
let data = Data(bytes: dataBlob, count: Int(dataBlobLength))
}