原因:SQL语句有问题
准备用FMDB来进行图片缓存,发现图片可以正常存入数据库,但是取出的数据库的data却是OS_dispatch_data,转为image的时候为nil。
以为是OS_dispatch_data(和NSData可以无缝桥接)有问题,然后先转为string,然后在转为NSData,然后转为image还是nil。
搜索了几个实现FMDB保存图片都没有问题。然后进行对照,然后发现是SQL语句有问题。
我这边插入和更新语句都使用到了 '%@' 来插入和更新数据
[NSString stringWithFormat:@"insert into t_saveimage (name, imagedata) values('%@', '%@')", model.name, model.imageData];
当我更换为下面这个语句的时候就可以正常显示图片了。更新语句也同理。
BOOL insertResult = [db executeUpdate:@"insert into t_saveimage (name, imagedata) values(?, ?)", model.name, model.imageData];
具体实现就不放了,基本上都差不多,我是参考这篇文章发现问题的。