首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自initWithString的NSURL对象给出-[NSURL长度]错误

来自initWithString的NSURL对象给出-[NSURL长度]错误
EN

Stack Overflow用户
提问于 2013-11-01 17:28:46
回答 5查看 6.7K关注 0票数 1

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

代码语言:javascript
复制
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);
    }
}

我得到了这个错误:

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSInvalidArgumentException'
   , reason: '-[NSURL length]: unrecognized selector sent to instance 0x175ede10'
EN

回答 5

Stack Overflow用户

发布于 2013-11-01 18:17:58

文档中提到了UIImagePickerControllerMediaURL

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

您的错误消息也是这样说的:

因此

代码语言:javascript
复制
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);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2015-01-15 21:34:21

可能会对你有帮助。

尝尝这个

代码语言:javascript
复制
NSString *urlStr =[NSString stringWithFormat:@"%@", [info
              objectForKey:UIImagePickerControllerMediaURL]];
NSURL *url = [[NSURL alloc] URLWithString:urlStr];

而不是直接分配URL

代码语言:javascript
复制
NSURL *url = [[NSURL alloc] initWithString:[info
              objectForKey:UIImagePickerControllerMediaURL]];
票数 2
EN

Stack Overflow用户

发布于 2013-11-01 17:36:07

基本上你得不到字典中的URL字符串,因为[info objectForKey:UIImagePickerControllerMediaURL]不提供所选图片的url。

纪录片上说:

拾取项目的原始版本的资源库URL。在用户编辑所拾取的项目之后-例如,通过裁剪图像或裁切影片- URL继续指向所拾取项目的原始版本。

但是你可以像这样得到UIImage格式的图片:

代码语言:javascript
复制
UIImage *image = info[UIImagePickerControllerOriginalImage];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19724028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档