UIDocumentInteractionController nil字符串参数

时间:2014-05-23 10:48:27

标签: ios nsdata null invalidargumentexception

我正在使用UIDocumentInteractionController以这种方式显示图像,录音,视频等:

NSURL *URL = [[NSBundle mainBundle] URLForResource:@"2013-08-01 13_20_44 (id)" withExtension:@"mov"];

OR

NSData* dataFile = [dict objectForKey:@"FileData"];
    NSString *urlString = [[NSString alloc] initWithData:dataFile encoding:NSUTF8StringEncoding]; // Or any other appropriate encoding
    NSURL *URL = [[NSURL alloc] initWithString:urlString];

然后:

if (URL) {
        // Initialize Document Interaction Controller
        documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:URL];

        // Configure Document Interaction Controller
        [documentInteractionController setDelegate:self];

        // Preview PDF
        [documentInteractionController presentPreviewAnimated:YES];
    }

通过从mainBundle访问文档,有时它可以工作,有时我得到以下错误:

2014-05-23 12:25:54.648 Cleverly[362:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initWithString:relativeToURL:]: nil string parameter'

使用NSData方式,我总是得到它(NSData没有损坏,我可以通过其他方式打开它。)

1)这是为什么? 2)我怎样才能防止它至少崩溃? 3)错误是什么意思? (为什么它适用于mainBundle中的某些资源而不适用于其他资源)?

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

如崩溃所述,逻辑中可能存在一些返回nil urlString的情况, 为避免崩溃,请添加以下条件:

if(nil != urlString)
{
    NSURL *URL = [[NSURL alloc] initWithString:urlString];
}

或找到返回无效urlString的根本原因。