2013-12-10 5 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.

Смежные вопросы