将目录中保存的图像显示到集合视图
Posted
技术标签:
【中文标题】将目录中保存的图像显示到集合视图【英文标题】:Showing saved images in directory to a Collection View 【发布时间】:2013-08-14 13:31:18 【问题描述】:通常当您在项目文件中有图像时,您会使用代码
arraycollectionimages = [[NSArray alloc]]initwithobjects
但是我想显示保存在目录中的图像。我创建了多个目录,所以我只想为其中一个调用图像。为了完成这项工作,我想使用此代码但是我不能这样做?我只是按如下方式将其卡住,但效果不佳。
- (void)viewDidLoad
NSArray *arrayCollectionImages = [[NSArray alloc ]init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *location=@"Genre1";
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location];
NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
for(NSString *str in directoryContent)
NSString *finalFilePath = [fPath stringByAppendingPathComponent:str];
NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
if(data)
UIImage *image = [UIImage imageWithData:data];
[arrayCollectionImages addObject:image];
【问题讨论】:
【参考方案1】:我认为您的目录搜索可能需要很长时间。试试这个...
- (void)viewDidLoad
dispatch_queue_t searchQ = dispatch_queue_create("com.awesome", 0);
dispatch_async(searchQ, ^
NSArray *arrayCollectionImages = [[NSArray alloc ]init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *location=@"Genre1";
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location];
NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
for(NSString *str in directoryContent)
NSString *finalFilePath = [fPath stringByAppendingPathComponent:str];
NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
if(data)
dispatch_async(dispatch_get_main_queue(),^
UIImage *image = [UIImage imageWithData:data];
);
[arrayCollectionImages addObject:image];
);
代码基本上会在搜索中产生另一个线程,并在图像准备好时放置图像。
【讨论】:
您好,感谢您的回答,我在[arrayCollectionImages addObject:image];
收到图像错误,您能解释一下最后一段代码吗?我在 arrayCollectionImages 也有一个警告,说 arrayColectionImages 的本地声明隐藏实例变量。
对于addObject
,您需要一个NSMutableArray
。
是的,您需要将 arraycollectionimages = [[NSArray alloc]]initwithobjects 更改为 ....arraycollectionimages = [[NSMutableArray alloc]]initwithobjects以上是关于将目录中保存的图像显示到集合视图的主要内容,如果未能解决你的问题,请参考以下文章