initWithString的NSURL对象给出了 – 错误
我试图find一个文件的path,然后删除它使用NSFileManager类。 [info objectForKey:UIImagePickerControllerMediaURL]
确实返回一个string,所以我不明白为什么它失败了一个有效的参数。
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'
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); } }
可能会帮助你。
尝试这个
NSString *urlStr =[NSString stringWithFormat:@"%@", [info objectForKey:UIImagePickerControllerMediaURL]]; NSURL *url = [[NSURL alloc] URLWithString:urlStr];
比你直接分配的url
NSURL *url = [[NSURL alloc] initWithString:[info objectForKey:UIImagePickerControllerMediaURL]];
基本上你没有得到字典中的URLstring,因为[info objectForKey:UIImagePickerControllerMediaURL]
不提供[info objectForKey:UIImagePickerControllerMediaURL]
图像的URL。
Documentaton说:
拾取项目的原始版本的资源库URL。 在用户编辑一个拣选的项目之后(例如通过裁剪图像或修剪电影),URL将继续指向拣选项目的原始版本。
但是你可以像UIImage一样获得图像:
UIImage *image = info[UIImagePickerControllerOriginalImage];
replace下面的行
NSURL *url = [[NSURL alloc] initWithString:[info objectForKey:UIImagePickerControllerMediaURL]];
用这条线
NSURL * url = [NSURL fileURLWithPath:[info objectForKey:UIImagePickerControllerMediaURL]];
我不确定它会解决你的问题。 但我觉得它应该解决你的问题,因为文件pipe理器URLWithString:
不工作,因为string包含文件path,所以你必须使用fileURLWithPath:
首先检查你的objectforkey值是什么它返回。 如果它正在返回url,那么在你写的initWithString的代码第三行只是replace成initWithUrl并尝试。
- '+ entityForName:nil不是合法的NSManagedObjectContext参数 – 核心数据
- iOS – 全局exception处理程序
- 加载主XIB使iOS 3.0上的应用程序崩溃
- Monotouch全局例外处理
- 如何使用NSSetUncaughtExceptionHandler获取未捕获的exception的类,方法和行号
- EXC_BAD_ACCESS自动处理
- 当我在设备上运行我的应用程序时,dyld`gdb_image_notifierexception
- iOS CALayerInvalidGeometry
- CRASH:*** – :index bound 4294967295 beyond bounds