从DB检索NSData,将无法识别的选择器错误发送到__NSCFString

时间:2012-05-30 04:40:41

标签: objective-c cocoa-touch ios5 uiimage nsdate

我无法将NSData转换为UIImage

我从设备摄像头捕获图像,并将此图像转换为NSData,以使用BLOB数据类型将其存储在SQLite中。

图像数据已成功存储在数据库中,但当我检索图像数据时,应用程序崩溃。

我使用此代码:

NSData *tempData = [[NSData alloc] init];
tempData = [[arr_img objectAtIndex:indexPath.row] valueForKey:@"Image"];

UIImage *img = [[UIImage alloc] initWithData:tempData];

并收到此错误:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFString bytes]:无法识别的选择器发送到实例0x5f8c000'

我做错了什么?

2 个答案:

答案 0 :(得分:1)

你可以这样做

NSData *data = yourData;
UIImage *image = [UIImage imageWithData:data];

NSData *data = yourData;
UIImage *image = [[UIImage alloc] initWithData:data];
[image release];

如果它确实有效意味着你的NSData值可能存在一些概率

答案 1 :(得分:1)

将图像插入SQLite:

sqlite3_bind_blob(compiledStatement,i, [image_data bytes], [image_data length], SQLITE_TRANSIENT);

从SQLite获取图片:

NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, i) length: sqlite3_column_bytes(compiledStatement, i)];           
UIImage *img = [UIImage imageWithData:dataForCachedImage];

这里'i'是您的数据库列号