Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

read blob data extra argument bytes in call swift

I am trying to read blob data from sqlite, but I get Extra argument 'bytes' in call error.

Here is my code:

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!)
}
like image 370
Chongzl Avatar asked Sep 07 '25 08:09

Chongzl


1 Answers

sqlite3_column_bytes returns an Int32, but NSData(bytes:, length: ) expects an Int as second argument, therefore you have to convert the value explicitly:

let dbData = NSData(bytes: point, length: Int(len))

Note also that this NSData initializer does not return an optional, so assigning it to an var dbData:NSData? makes not much sense, and even then dbData will never be nil.

What you can do is to check if 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))
    // ...
}
like image 115
Martin R Avatar answered Sep 10 '25 13:09

Martin R