无法从文件路径创建 UIImage
Unable to create UIImage from filepath
我正在尝试从 Core Data 保存文件位置列表创建 UIImage。这是我的代码:
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"];
日志显示以下对象与核心数据请求:
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";
})
我已经检查过,所有三个图像都存在于设备上,但它一直返回为空。
问题是 Documents 目录的路径可能会更改,尤其是在重建应用程序时。所以不要存储文件的完整路径。只需存储文件名。要获取图像,请使用
查找文档目录的路径
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]
并附加文件名。
我正在尝试从 Core Data 保存文件位置列表创建 UIImage。这是我的代码:
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"];
日志显示以下对象与核心数据请求:
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";
})
我已经检查过,所有三个图像都存在于设备上,但它一直返回为空。
问题是 Documents 目录的路径可能会更改,尤其是在重建应用程序时。所以不要存储文件的完整路径。只需存储文件名。要获取图像,请使用
查找文档目录的路径[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]
并附加文件名。