2013-12-10 49 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