我有一个 sqlite db 存储在 Document 目录中,图像名称存储在表的一列中。图像存储在应用程序包中。图像是通过使用代码在列中给出 imgaes 的名称直接来的。意味着没有需要指定任何路径..只要名称就可以了。
现在,如果我在文档目录中动态存储图像并直接在 Sqlite db 的图像列中给出图像的名称,我无法获取它。我是否需要指定任何路径才能到达那里..因为应用程序包中的图像直接出现。
是的。您需要在文档目录中指定 sqlite 文件的路径。
或者使用以下代码和相应的图像名称(图像在文档目录中):
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"img.png"];
yourImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]];
您可以获得如下目录路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
要获取图像,您必须在此路径后附加图像名称。您的数据库中有数据,因此您可以从中获取图像名称。
如果数据库中的值只是图像的名称(例如“someimage.png”),那么您有两种可能:
1)如果图像在应用程序包中,则将数据库中的值与UIImage imageNamed:
方法一起使用。我相信你已经有了这个工作。
2)如果图像在Documents
目录中,那么您还有更多工作要做。您需要获取Documents
目录的完整路径,然后将文件名(来自数据库)附加到路径中。这将为您提供Documents
目录中图像的完整路径。然后要加载图像,您需要使用UIImage imageWithContentsOfFile:
传递完整文件路径的方法。
使用此代码。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory35 = [paths objectAtIndex:0];
//Essential Info
NSString *fullPathEssentialInfo = [documentsDirectory35 stringByAppendingPathComponent:@"EssentialInfo.txt"];
这是实现的代码。谢谢
这里有一个访问 SQLite 的示例项目:https ://github.com/AaronBratcher/ABSQLite