2013-12-10 2 views
-1

아래 코드를 사용하여 저장된 클릭 이미지 파일을 문서 디렉토리에서 읽습니다. 처음에는 잘 작동했지만 두 번째로 저장된 이미지 파일을 읽으려고 할 때 처음으로 클릭 한 이미지를 보여줍니다.NSFileManager : 제대로 작동하지 않음

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingImage:(UIImage *)image 
       editingInfo:(NSDictionary *)editingInfo 
{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent: 
         @"test.png" ]; 

    NSFileManager* fileManager=[NSFileManager defaultManager]; 
    if ([fileManager fileExistsAtPath:path]) { 
     NSError* error; 
     [fileManager removeItemAtPath:path error:&error]; 
    } 
    NSData* data = UIImagePNGRepresentation(image); 
    [data writeToFile:path atomically:YES]; 
    [self.viewController dismissViewControllerAnimated:YES completion:nil]; 
} 

언제나 나에게 반환되는 이미지가 처음 클릭되었을 때 그 이유가 궁금합니다.

+1

언제든지 파일이 존재할 때마다 해당 파일을 제거해야합니까? –

+2

표시되는 방법은 아무 것도 반환하지 않습니다. 디스플레이 용 이미지를 어떻게로드하고 있습니까? – Wain

+1

'writeToFile : atomically :'!의 반환 값을 확인하십시오! –

답변

1

didFinishPickingImage:은 iOS3 이후 사용되지 않습니다.

이 작동합니다 :

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 

    if (!image) { 

     image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    } 

    if (image) { 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString* path = [documentsDirectory stringByAppendingPathComponent:@"test.png" ]; 

     NSData* data = UIImagePNGRepresentation(image); 
     [data writeToFile:path atomically:YES]; 
     [self.viewController dismissViewControllerAnimated:YES completion:nil]; 
    } 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

documentation을 확인하시기 바랍니다.

관련 문제