gpt4 book ai didi

objective-c - NSData UIImageJPEGRepresentation 未写入 SQLite fmdb

转载 作者:行者123 更新时间:2023-11-29 04:50:04 25 4
gpt4 key购买 nike

我正在尝试将 jpeg 转换为 nsdata 对象,然后使用 fmdb 包装器将该数据存储在 sqlite 数据库的 blob 列中。

例如:

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 列时,我得到 blob 列返回的 null。在写入数据库之前,我仔细检查了我正在写入的 NSData 是否不为空,并且确实包含 jpeg 表示形式,而且确实如此。是否有一个已知问题出现在任何人身上,或者我只是在外部做错了什么?

最佳答案

这一行:

NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];

总是会产生这个字符串:

insert into t1 values (null,?)

As -stringWithFormat: 不明白您正在尝试将数据绑定(bind)到“?”。

看起来 FMDatabase 有一个 -executeQuery: 方法,它接受可变数量的参数。试试这个:

[database executeQuery:@"insert into t1 values (null,?)", data];

如果使用sqlite3手动打开数据库,里面有原始的JPEG数据吗?

警告:我正在访问我大脑中的一个古老部分,因为我已经有几年没有处理数据库了;)

关于objective-c - NSData UIImageJPEGRepresentation 未写入 SQLite fmdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com