2015-02-03 2 views
1

Я пытаюсь прочитать данные BLOB из sqlite, но я получаю ошибку Extra argument 'bytes' in call.читать данные blob дополнительные аргументы байты в вызове swift

Вот мой код:

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!) 
} 

ответ

4

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)) 
    // ... 
} 
+0

спасибо. оно работает – Chongzl

Смежные вопросы