Я пытаюсь преобразовать jpeg в объект nsdata, а затем сохранить эти данные в столбце blob базы данных sqlite, используя обертку fmdb.NSData UIImageJPEGПреобразование, не записывающее SQLite fmdb
например:
UIImage *img = [UIImage imageNamed:@"house.jpeg" ];
NSData *data = UIImageJPEGRepresentation(img, 1.0);
NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];
Где t1 создается что-то вроде:
[database executeUpdate:@"create table t1(rowid integer primary key autoincrement, house blob)" ];
В идеале я бы тогда быть в состоянии вытащить данные и преобразовать его обратно в формате JPEG, как так:
NSString *query = @"select * from t1";
FMResultSet *results = [database executeQuery:query];
while ([ results next ])
{
NSData *picData = [ results dataForColumn:@"house" ];
UIImage *housePhoto = [ UIImage imageWithData:picData ];
}
Я использовал этот тип модели для других типов данных, таких как строки и т. Д. Без проблем. В моей текущей попытке я использую эту модель с таблицей столбцов строки и 1 столбцом blob. Когда я пишу в базу данных, все строки хранятся в порядке, но когда я пытаюсь прочитать столбец blob, как указано выше, я возвращаю null для столбца blob. Перед записью в базу данных я дважды проверял, что NSData, с которой я пишу, не был нулевым и содержал представление jpeg, и это произошло. Вызывает ли известная проблема кто-либо или я просто делаю что-то неправильно из-за этого?
Вы проверили полученную SQLite базу данных, чтобы увидеть, если какой-либо данные на самом деле были сохранены в столбец? Это помогло бы определить, является ли проблема написанием данных в первую очередь, а не после ее считывания. Вы также должны проверить, чтобы 'UIImageJPEGRepresentation()' возвращал значение, отличное от 'nil', потому что оно может фактически возвратить' nil', если изображение не имеет данных или использует неподдерживаемый формат растрового изображения. –