1

我正在尝试查找带有路径的文件,然后使用 NSFileManager 类将其删除。确实返回一个字符串,所以[info objectForKey:UIImagePickerControllerMediaURL]我不明白为什么它在有效参数上失败。

NSError *error;

NSFileManager *manager = [NSFileManager defaultManager];

NSURL *url = [[NSURL alloc] initWithString:[info
              objectForKey:UIImagePickerControllerMediaURL]];


if ([manager isDeletableFileAtPath: [info 
                  objectForKey:UIImagePickerControllerMediaURL]]) {
    BOOL success = [manager removeItemAtURL:url error:&error];
    if (!success) {
        NSLog(@"Error removing file at path: %@", error.localizedDescription);
    }
}

我得到这个错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException'
   , reason: '-[NSURL length]: unrecognized selector sent to instance 0x175ede10'
4

5 回答 5

3

文档说UIImagePickerControllerMediaURL

指定电影的文件系统 URL。这个键的值是一个 NSURL 对象。

你的错误信息也是一样的:

所以

NSError *error;
NSFileManager *manager = [NSFileManager defaultManager];
NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL];

if ([manager isDeletableFileAtPath:url]) {
    BOOL success = [manager removeItemAtURL:url error:&error];
    if (!success) {
        NSLog(@"Error removing file at path:%@", error.localizedDescription);
    }
}
于 2013-11-01T10:17:58.497 回答
2

可能对你有帮助。

尝试这个

NSString *urlStr =[NSString stringWithFormat:@"%@", [info
              objectForKey:UIImagePickerControllerMediaURL]];
NSURL *url = [[NSURL alloc] URLWithString:urlStr];

比您直接分配 URL

NSURL *url = [[NSURL alloc] initWithString:[info
              objectForKey:UIImagePickerControllerMediaURL]];
于 2015-01-15T13:34:20.737 回答
0

首先检查您的 objectforkey 值它返回的值。如果它返回 url,那么在您编写 initWithString 的代码第三行中,只需替换为 initWithUrl 并尝试。

于 2013-11-01T09:55:51.167 回答
0

替换以下行

NSURL *url = [[NSURL alloc] initWithString:[info
              objectForKey:UIImagePickerControllerMediaURL]];

用这条线

NSURL * url = [NSURL fileURLWithPath:[info
              objectForKey:UIImagePickerControllerMediaURL]];

我不确定它会解决你的问题。但我觉得它应该解决你的问题,因为文件管理器URLWithString:不起作用,因为字符串包含文件路径,所以你必须使用fileURLWithPath:

于 2013-11-01T09:39:40.647 回答
0

基本上,您没有在字典中获取 URL 字符串,因为[info objectForKey:UIImagePickerControllerMediaURL]不提供所选图像的 url。

文档 说:

所选项目的原始版本的资产库 URL。在用户编辑选取的项目后——例如通过裁剪图像或修剪电影——URL 继续指向选取项目的原始版本。

但是您可以将图像作为 UIImage 获取,例如:

UIImage *image = info[UIImagePickerControllerOriginalImage];
于 2013-11-01T09:36:07.160 回答