SQLite сохранит NSData и вернет его

Я использую sqlite в своей программе. Чтобы сохранить NSData, я использую это:

sqlite3_bind_blob(addStmt, 5, somedata, -1, SQLITE_TRANSIENT);

И получить его обратно следующим образом:

NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 4) length:sqlite3_column_bytes(selectstmt, 4)];

Но когда я пытаюсь увидеть данные:

NSLog(@"%@", data);

Он возвращается: <84fa8801 0200>

Пожалуйста, помогите мне преобразовать его в настоящий NSData..


person LightNight    schedule 21.08.2012    source источник
comment
Как выглядели исходные данные?   -  person Hot Licks    schedule 21.08.2012


Ответы (2)


я точно уверен

NSLog(@"%@", data);

просто распечатывает адрес памяти объекта NSData. Я думаю, вы ищете что-то вроде этого:

NSString *stringData = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];

Это даст вам данные, содержащиеся в текущей строке в первой ячейке, как NSString.

person James    schedule 21.08.2012

Что вы подразумеваете под «настоящим NSData»? NSData всегда будет двоичными данными, выглядящими точно так же, как вы разместили их при использовании в операторе журнала.

Чтобы снова иметь печатную NSString, вы должны создать NSString, используя функцию [initWithData:]:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
person Steffen Blass    schedule 21.08.2012