【问题标题】: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];
        }
    }

【问题讨论】:

    标签: ios directory save uicollectionview photo


    【解决方案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
    猜你喜欢
    • 2017-02-12
    • 2017-02-11
    • 2012-08-13
    • 2018-11-15
    • 1970-01-01
    • 2012-07-03
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多