【问题标题】:How to save image in sqlite using FMDB in ios?如何在 ios 中使用 FMDB 将图像保存在 sqlite 中?
【发布时间】:2015-04-19 21:49:11
【问题描述】:

我想将图像保存在我的数据库中并在需要时检索它,我已经尝试了通过搜索获得的所有解决方案

[database executeQuery:
@"INSERT INTO customerPresImage (cbFormFK, imageName, imagePath, imageData) VALUES (?, ?, ?, ?)", 
cbFormPK, 
[[AllFormFields sharedManager].nameSaved objectAtIndex:i],
[[AllFormFields sharedManager].images objectAtIndex:i], 
[[AllFormFields sharedManager].actualImageData objectAtIndex:i]
];

[[AllFormFields sharedManager] actualImageData]

包含 NSData 对象,但是当我尝试执行我的应用程序时,此时会卡住:

我也尝试过将该对象存档,但从逻辑上讲这没有意义,因为我的数组中已经有 nsdata 对象

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:[[AllFormFields sharedManager].actualImageData objectAtIndex:i]];

P.S:我在 sqlite 中使用 blob 数据类型。请建议我更正,或者是否有其他方法可以完成。

我已经看到这些问题并采取了行动Question1

Question2

【问题讨论】:

  • 屏幕截图暗示您有内存管理问题,并尝试访问不再可用的指针/变量
  • 但是为什么当我删除列名并执行它时它会成功。但 nsdata 对象没有保存在其中

标签: ios image sqlite nsdata fmdb


【解决方案1】:

使用

[database executeUpdate:… ] 而不是
[database executeQuery :… ]


请参阅Executing UpdatesFMDB Website。这是第一行:

任何不是 SELECT 语句的 SQL 语句都有资格作为 更新。

【讨论】:

  • 这样做对我不利。虽然我已经找到了方法,但是这种图像数据的保存对我不起作用,我不知道为什么。
  • 做一些错误检查。如果您不知道如何:阅读有关在 FMDB 网站上执行更新的部分,那里有描述。确保您尝试插入的对象是有效的、非零对象。我认为当一个对象为零时它可能会失败。
猜你喜欢
  • 1970-01-01
  • 2014-01-27
  • 2012-05-14
  • 2013-10-04
  • 2017-06-15
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多