2

对于我无法解决的问题,我需要一些帮助,但我认为我已经接近解决方案。就这个:

在我的应用程序的一个版本中,我能够使用从以下 2 行CellforRowAtIndexPath获取的图像填充 tableview (in) :Assetlibrary

ALAsset someAsset = [theAssets objectAtIndex:indexPath.row];
[cell.imageView setImage:[UIImage imageWithCGImage:[someAsset thumbnail]]];

现在,我正在尝试从目录中读取图像文件并存储在NSMutableArray. 我可以NSLogNSMutableArray. 但是我现在如何将文件转换为图像并显示在我的表格视图中,就像我为什么使用Assetlibrary? 我已经尝试了几次,但应用程序要么崩溃,要么在表格视图中不显示图像缩略图。例如,此语句不显示图像但应用程序不会崩溃:

UIImage *anImage = [UIImage imageWithContentsOfFile:[self.listTable objectAtIndex:0]];

当我在下一行设置图像时,它不起作用。有人请帮忙!

更新:当我 NSLog 时 self.listable 的内容是这样的:“19-10-25 276-10-12.jpg”、“19-10-37 276-10-12.jpg”、“19- 10-54 276-10-12.jpg”、“19-10-65 276-10-12.mov”等

当我 NSLog 我的文档目录时,它是:/var/mobile/Applications/8CB1368A-AAE2-4815-BD26-A7B7C8536193/Documents。

4

1 回答 1

1

应用程序只能imageWithContentsOfFile用于位于应用程序沙箱内的文件(例如,在Documents、捆绑包等)。如果这些文件位于您的Documents文件夹中,您可以通过以下方式获得完整路径:

NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imageFullPath   = [documentsFolder stringByAppendingPathComponent:imageFilename];

然后,您可以在imageWithContentsOfFile.


更新:

您询问:

directoryContents是一个NSArray;如何将其转换为NSString然后[documentsFolder stringByAppendingPathComponent ...]将每个完整路径存储在NSMutableArray?

您可能会执行以下操作:

NSFileManager *fileManager   = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSArray *filenames           = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];
NSMutableArray *paths        = [[NSMutableArray alloc] initWithCapacity:[filenames count]];

for (NSString *filename in filenames)
{
    [paths addObject:[documentsDirectory stringByAppendingPathComponent:filename]];
}

NSLog(@"%s filenames = %@", __FUNCTION__, filenames);
NSLog(@"%s paths = %@", __FUNCTION__, paths);
于 2012-10-03T16:58:48.470 回答