【问题标题】:iOS Core Data can't open image from stored URIiOS Core Data 无法从存储的 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:...

标签: ios core-data


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2021-05-06
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多