如何显示NSDocument目录中的所有图像

Rox*_*Rox 5 iphone objective-c alassetslibrary ios5 nsdocumentdirectory

首先,我从照片库中选择了图像到ALAsset库,之后我将图像存储在ALAsset库路径的文档目录中.

我正在使用此代码将图像存储在ALAsset Library的文档目录中....它的工作完美...现在我想在表视图中显示存储在文档目录中的所有图像..我该怎么做?有谁能够帮我??

用于将图像从ALAsset Library导入NSdocument目录的代码

for (int j=0; j<[assetArray count]; j++) {

ALAssetRepresentation *representation = [[assetArray objectAtIndex:j] defaultRepresentation];
NSString* filename = [documentPath stringByAppendingPathComponent:[representation filename]];

[[NSFileManager defaultManager] createFileAtPath:filename contents:nil attributes:nil];
NSOutputStream *outPutStream = [NSOutputStream outputStreamToFileAtPath:filename append:YES];
[outPutStream open];

long long offset = 0;
long long bytesRead = 0;

NSError *error;
uint8_t * buffer = malloc(131072);
while (offset<[representation size] && [outPutStream hasSpaceAvailable]) {
    bytesRead = [representation getBytes:buffer fromOffset:offset length:131072 error:&error];
    [outPutStream write:buffer maxLength:bytesRead];
    offset = offset+bytesRead;
}
[outPutStream close];
free(buffer);
Run Code Online (Sandbox Code Playgroud)

}

之后,我使用此代码获取目录的内容:

 NSFileManager *manager = [NSFileManager defaultManager];
fileList = [manager directoryContentsAtPath:newDir];
Run Code Online (Sandbox Code Playgroud)

它也工作......但现在我想显示文件目录中的图像.它没有显示任何东西....

 setImage.image=[UIImage imageNamed:[filePathsArray objectAtIndex:0]];
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙,问题出在哪里????? - 我有一个疑问:*它是从ALAsset库导入图像到文档目录的正确方法吗?

The*_*ger 11

这个答案是关于如何检索文档目录图像并将其显示到UITableView的... ..

首先,您必须将文档目录中的所有图像都添加到数组中....

-(void)viewWillAppear:(BOOL)animated
{

    arrayOfImages = [[NSMutableArray alloc]init];
NSError *error = nil;


    NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath: stringPath  error:&error];

  for(int i=0;i<[filePathsArray count];i++)
  {
      NSString *strFilePath = [filePathsArray objectAtIndex:i];
      if ([[strFilePath pathExtension] isEqualToString:@"jpg"] || [[strFilePath pathExtension] isEqualToString:@"png"] || [[strFilePath pathExtension] isEqualToString:@"PNG"]) 
      {
         NSString *imagePath = [[stringPath stringByAppendingString:@"/"] stringByAppendingString:strFilePath];
         NSData *data = [NSData dataWithContentsOfFile:imagePath];
        if(data)
        {
          UIImage *image = [UIImage imageWithData:data];
          [arrayOfImages addObject:image];
        }
      }

  }

}
Run Code Online (Sandbox Code Playgroud)

之后 - 使用此数组,您可以在uitableview单元格中显示图像,切记不要在视图上添加表格视图,直到您的数组填充.....

#pragma mark - UItableViewDelegate methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arrayOfImages count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tablView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    //adjust your imageview frame according to you
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0.0, 0.0, 470.0, 80.0)];

    [imageView setImage:[arrayOfImages objectAtIndex:indexPath.row]];
    [cell.contentView addSubview:imageView];
    return cell;
Run Code Online (Sandbox Code Playgroud)

}

现在运行它会工作..