【问题标题】:Unable to create UIImage from filepath无法从文件路径创建 UIImage
【发布时间】:2016-05-09 15:40:44
【问题描述】:

我正在尝试从 Core Data 保存的文件位置列表创建 UIImages。这是我的代码:

ontracFullScreenImageViewController *sectional = [viewControllerDictionary objectForKey:@"Sectional Appendices"];
        sectional.dataObject = self.dataObject.dataPack;
        //sectional.imageArray = [[dataObject.sectionalDiagrams allObjects] mutableCopy];



        if ([dataObject.sectionalDiagrams count] != 0 || dataObject.sectionalDiagrams == nil){
        NSLog(@"dataObject.sectionalDiagrams %@", dataObject.sectionalDiagrams);
            for (SectionalDiagram *section in dataObject.sectionalDiagrams) {
                NSLog(@"section %@", section);
                UIImage *image = [UIImage imageWithContentsOfFile:section.locationString];

                NSLog(@"image %@", image);

                if(image != nil){
                    [sectional.imageArray addObject:image];
                    [sectional.imageLinks addObject:section.locationString];
                }



            }
            //[sectional loadScreen];

        }
        else
        {
            [self removeMenuOptionForString:@"Sectional Appendices"];
        }
        [TestFlight passCheckpoint:@"Loaded the Sectional Appendices"];

日志显示以下带有 Core Data 请求的对象:

with objects {(
<SectionalDiagram: 0x14fdde40> (entity: SectionalDiagram; id: 0x14fddb10 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p15> ; data: {
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>";
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/coss@on-trac.co.uk_A2rA2d_sectional_appendix_947735_2147483647_image.png";
}),
<SectionalDiagram: 0x14fddbd0> (entity: SectionalDiagram; id: 0x14fddaf0 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p13> ; data: {
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>";
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/coss@on-trac.co.uk_NpH3Yg_sectional_appendix_947735_2147483647_image.png";
}),
<SectionalDiagram: 0x14fdde10> (entity: SectionalDiagram; id: 0x14fddb00 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p14> ; data: {
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>";
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/coss@on-trac.co.uk_jGKgWx_sectional_appendix_947735_2147483647_image.png";
})

我已经检查过,所有三个图像都存在于设备上,但它总是返回为空。

【问题讨论】:

  • 您的帖子中没有任何内容表明存在核心数据错误。这是从哪里来的?
  • 不要存储文件的完整路径。只需存储文件名。要获取图像,请查找文档目录的路径,并附加文件名。
  • @TomHarrington 你是对的!我意识到错误只是试图过早记录关系信息。
  • @jampez77 如果您在登录dataObject.sectionalDiagrams 之前登录[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject],路径是否匹配?
  • @jampez77 谢谢 - 作为答案添加。

标签: ios objective-c core-data uiimage relationships


【解决方案1】:

问题在于 Documents 目录的路径可能会更改,尤其是在重新构建应用程序时。所以不要存储文件的完整路径。只需存储文件名。要获取图像,请查找文档目录的路径,使用

[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]

并附加文件名。

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2011-04-14
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多