iOS Core Data 无法从存储的 URI 打开图像
Posted
技术标签:
【中文标题】iOS Core Data 无法从存储的 URI 打开图像【英文标题】:iOS Core Data can't open image from stored URI 【发布时间】:2012-11-27 13:44:23 【问题描述】:在我的应用程序中,我将图像存储在我的文档文件夹中,并将它们的 URI 存储在数据库中。
每当我尝试根据存储在数据库中的 URI 加载图像时,结果都会返回“nil”。
存储的 URI 如下所示:
/用户/我的名字/图书馆/应用程序支持/iPhone 模拟器/6.0/Applications/78325CF9-73B0-4D0D-B136-FD8FF8D837C1/Documents/WC_45FEAF25-AC0C-4E91-A5E2-AA48215F1E48-3147-000005C6C9E65B42.jpg
当我从 iTerm 中查看它时,我看到图像在那里,但在 iTerm 中我必须像这样 cd 进入目录:
/Users/myname/Library/Application\ Support/iPhone\ 模拟器/6.0/Applications/78325CF9-73B0-4D0D-B136-FD8FF8D837C1/Documents/WC_45FEAF25-AC0C-4E91-A5E2-AA48215F1E48-3147-000005C6C9E65B42.jpg
注意空格前的反斜杠
我正在尝试使用此功能获取图像:
-(UIImage *) getImageFromURL:(NSString *)fileURL
UIImage * result;
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
result = [UIImage imageWithData:data];
return result; //result is always nil
问题与反斜杠有关吗? 非常感谢任何帮助!
此致,
佐利
【问题讨论】:
你不应该使用[NSURL fileURLWithPath:fileURL]
吗?
为什么? URLWithString 正是要使用的函数
因为看起来你使用的是本地文件URL,但是如果它前面没有包含file://
,则需要使用fileURLWithPath
进行转换。
你能提供一个代码来解释你是怎么做的吗?
和你得到的完全一样,把URLWithString:
换成fileURLWithPath:
...
【参考方案1】:
解决方案是不在数据库中存储 uri,只存储图像名称。 (但仍将图像存储在文档目录中) 然后使用以下函数可以检索图像:
- (UIImage*)loadImageWithName:(NSString*) name
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithString: name] ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
return image;
【讨论】:
以上是关于iOS Core Data 无法从存储的 URI 打开图像的主要内容,如果未能解决你的问题,请参考以下文章
Core Data 中的 URI 类型属性:如何使用 NSPredicate 进行查询
无法将 NSDate 从 Parse 存储到 Core Data