0

私は UIDocumentInteractionController を使用して、画像、録音、ビデオなどを次のように表示しています。

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

また

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 の一部のリソースでは機能し、他のリソースでは機能しないのはなぜですか)?

助けてくれてありがとう

4

1 に答える 1

0

クラッシュが述べたように、nil urlString を返すロジックにいくつかのケースがある可能性があります。クラッシュを回避するには、次の条件を追加してください。

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

または、無効な urlString を返す根本原因を見つけます。

于 2014-05-23T11:17:11.377 に答える