【问题标题】:Retrieve all images from NSDocumentDirectory and storing into an array从 NSDocumentDirectory 检索所有图像并存储到数组中
【发布时间】:2011-11-30 13:24:06
【问题描述】:

目前我正在使用这些代码将我的图像保存到 NSDocumentDirectory。我使用这个计数器作为它们的命名约定。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo 
{
  [self.popoverController dismissPopoverAnimated:YES];
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDir = [paths objectAtIndex:0];
  NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", counter]];
  UIImage *image = imageView.image;
  NSData *imageData = UIImagePNGRepresentation(image);
  [imageData writeToFile:savedImagePath atomically:NO];
}

我使用这种方法是因为使用循环来检索所有这些对我来说更容易。我想从 NSDocumentDirectory 中检索所有图像,以便可以在另一个视图中显示它们。以下代码显示了我如何检索它们。

-(NSMutableArray *)GetImage:(NSMutableArray *)arrayImgNames
{
  NSMutableArray *tempArray;
  for(int i=0;i<[arrayImgNames count]; i++)
  {
    NSArray *paths1 = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths1 objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent: [arrayImgNames objectAtIndex:i]];
    [tempArray addObject:[[UIImage alloc] initWithContentsOfFile:filePath]];
    return tempArray;
  }
}

但是,我不希望将计数器用作我的图像的命名约定。我想为它们使用专有名称,但如果这样做,我将不得不更改检索所有图像的方法。

除了我提到的这个方法之外,我还有其他方法可以检索所有图像吗?

【问题讨论】:

    标签: objective-c ios xcode ipad nsdocumentdirectory


    【解决方案1】:

    您可以使用下一种方法检索文件:

    NSURL *url = [[AppDelegate sharedAppDelegate] applicationDocumentsDirectory];
    NSError *error = nil;
    NSArray *properties = [NSArray arrayWithObjects: NSURLLocalizedNameKey, NSURLLocalizedTypeDescriptionKey, nil];
    
    NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:url
                      includingPropertiesForKeys:properties options:(NSDirectoryEnumerationSkipsPackageDescendants)
                      error:&error];
    

    files 文件目录的所有文件的路径将被存储。下一个代码将帮助您获得名称:

    NSURL *url = [files objectAtIndex:index];
    NSString *localizedName = [url lastPathComponent];
    

    【讨论】:

      【解决方案2】:

      从 NSDocumentDirectory 中检索所有图像并存储到 uiimageview 中 viewcontroller.m

      • (void)viewDidLoad { [超级viewDidLoad];

        for (int i=0; i<5; i++) {
        
        imgview=[[UIImageView alloc]initWithFrame:CGRectMake(x, y, width, height)];
        
        NSArray *sysPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
        

        NSString *docDirectory = [sysPaths objectAtIndex:0];

        NSString *str=[NSString stringWithFormat:@"img%d.jpg",i];
        
        NSLog(@"abc %@",str);
        

        NSString *imagePath=[docDirectory stringByAppendingPathComponent:str];

        imgview.image=[UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]];
        [self.view addSubview:imgview]; [imgview setUserInteractionEnabled:YES];

        x=x+width+margin;
        if (x>=totalwidth) {
        
            y=y+height+margin;
            x=margin;
        
        }    
        

        } }

      【讨论】:

        猜你喜欢
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 2020-10-23
        相关资源
        最近更新 更多