在调用 swift 中读取 blob 数据额外参数字节
read blob data extra argument bytes in call swift
我正在尝试从 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!)
}
sqlite3_column_bytes
return 一个 Int32
,但是
NSData(bytes:, length: )
期望 Int
作为第二个参数,
因此您必须显式转换该值:
let dbData = NSData(bytes: point, length: Int(len))
另请注意,此 NSData
初始化程序 而不是 return 一个可选的,
所以将它分配给 var dbData:NSData?
没有多大意义,
即使那样 dbData
也永远不会是 nil
.
你能做什么
是检查是否 sqlite3_column_blob()
returned nil
or not:
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))
// ...
}
在 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))
}
我正在尝试从 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!)
}
sqlite3_column_bytes
return 一个 Int32
,但是
NSData(bytes:, length: )
期望 Int
作为第二个参数,
因此您必须显式转换该值:
let dbData = NSData(bytes: point, length: Int(len))
另请注意,此 NSData
初始化程序 而不是 return 一个可选的,
所以将它分配给 var dbData:NSData?
没有多大意义,
即使那样 dbData
也永远不会是 nil
.
你能做什么
是检查是否 sqlite3_column_blob()
returned nil
or not:
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))
// ...
}
在 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))
}