1

これまでのところ、送信先のパスapplication:openURL:sourceApplication:annotation:は次のとおりであることがわかりました。

file://localhost/private/var/mobile/Applications/<GUID>/Documents/Inbox/file

実行しようとしているファイルシステム操作が実際に成功する可能性が高いことを確認するには (および、指定された URL がサンドボックス外の場所ではないことを確認します)、次のようにする必要があります。

NSString* hdurl = [[@"file://localhost/private" stringByAppendingString:NSHomeDirectory()] stringByAppendingString: @"/"];
NSString* path = url.absoluteString;
if ([path hasPrefix:hdurl]) {
    // now ready to e.g. call fopen on: [path substringFromIndex:@"file://localhost".length]

さて、私は過去にfile:///スタイル URL が使用されているのを見たことがあることを漠然と思い出しているようです (これはおそらく間違っています)。これにより、このコードが失敗することは明らかです。

file://localhost常にURL プレフィックスが付けられることをどのように知ることができますか?

URL に関するApple のドキュメントには、奇妙にもファイル URL に関するセクションがありません。

4

1 に答える 1

1

ローカル ファイル システム上のNSURLファイルを指す は、「ファイル URL」と呼ばれます。を、使用するファイルのパスを表すに変換するNSURLには:NSString

NSString *filePath = [url path];

NSURLがファイル URL を表しているかどうかを確認するには、次を使用します。

BOOL isFileURL = [url isFileURL];

アプリにファイル URL が渡された場合は、常にファイルにアクセスできることに注意してください。プレフィックスで始まるかどうかを確認する必要はありません。アクセス権のないファイルが iOS から渡されるのはなぜですか?

于 2013-09-01T03:50:22.503 に答える