NSFileManager:无法正常工作

Posted

技术标签:

【中文标题】NSFileManager:无法正常工作【英文标题】:NSFileManager: not working properly 【发布时间】:2013-12-10 13:06:33 【问题描述】:

我正在使用以下代码从文档目录中保存和读取已保存的单击图像文件。它第一次运行良好,但是当我第二次尝试读取保存的图像文件时,它向我显示了第一次点击的图像。

- (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];

知道为什么每次返回我的图片都会第一次点击。

【问题讨论】:

您确定只要文件存在就需要删除该文件吗? 您显示的方法不返回任何内容。您如何加载图像以进行显示? 并检查writeToFile:atomically:的返回值! @MartinR:My writeToFile:atomically: 正在返回 True @Wain:我正在从 test.png 的同一路径读取图像文件......即每次点击我都会覆盖图像文件,并且它在 Document 目录中发生更改,但在读取时它返回给我的第一个点击图片。 【参考方案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。

【讨论】:

以上是关于NSFileManager:无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

遇到 NSFileManager defaultManager 时 iPhone 模拟器无法正常工作

NSFileManager 在没有管理员权限的情况下无法工作

.xcodeproj 文件的 NSFileManager 文件大小不正确

如何删除我的应用程序文档目录中的文件?

NSFileManager:无法在某些设备上创建目录

为啥 NSFileManager 不工作?