3

我在转换NSDataUIImage.

我从设备摄像头捕获图像,并将此图像转换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]: unrecognized selector sent to instance 0x5f8c000”

我究竟做错了什么?

4

2 回答 2

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' 是您的数据库列号

于 2012-05-30T04:55:50.813 回答
1

你可以这样做

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

或者

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

如果它确实有效,则意味着您的 NSData 的值可能存在一些问题

于 2012-05-30T04:48:05.233 回答