2016-12-16 5 views
-1

ファイルがサーバーにアップロードされ、パスがfile:///somepathで始まるパスになるようなシナリオが表示されます。 ../私はNSURL urlWithFilePathを使ってサーバーに変換します。URLがローカルファイルパスであるかリモートファイルパスであるかを判断する方法

サーバーにファイルがあると、そのファイルをダウンロードし、同じファイルに対してhttp://のようなリモートパスを取得するメカニズムがあります。

画像をタップすると、これをフルスクリーンで開くことを決定しますが、その前に[NSURL URLWithString]または[NSURL fileURLPath]を適用するかどうかを決定する必要があります。

画像を開くときに正しく適用する前に、これを検出する方法はありません。

+1

あなたは 'ファイルことはできません。リモートサーバへ' URLを。ローカルファイルのみです。 – rmaddy

+0

ありがとうrmaddyしかし、私のクエリの答えではない、私はDBに格納されている文字列のパスからアップロードまたはこの情報のダウンロード時には、リモートまたはローカルパスのいずれかを決定したいと思います。 –

+0

文字列にスキームがある場合は、 'URLWithString'を使用します。そうでなければ 'fileURLWithPath'を使います。 – rmaddy

答えて

-2

カテゴリー "NSStringの+ URL.m" クラスの追加

-(NSURL*)url 
{ 
    NSURL *myURL; 
if ([self.lowercaseString hasPrefix:@"http://"] || [self.lowercaseString hasPrefix:@"https://"] || [self.lowercaseString hasPrefix:@"file://"]) { 
    myURL = [NSURL URLWithString:self]; 
} 
else 
{ 
    //Default consider it file url path 
    myURL = [NSURL fileUrlWithPath:self]; 
} 
return myURL; 
} 
+0

いいえ、これは間違っています。スキーム( 'file:'を含む)があれば、 'URLWithString'を使う必要があります。文字列がファイルパスを表す場合にのみ、 'fileURLWithPath'を使用してください。ファイルパスにはURLスキームはありません。また、「www.google.com」のような文字列は有効なURLではありません。 – rmaddy

+0

ファイル:????常にローカルファイルではなく、リモートファイルです。そして私の質問をチェックしてください、私はローカルファイルパスまたはリモートパスhttp://またはfile://を扱っています。あなたが無効なURLで言うものは、エラーチェック条件でnilを返さないようにしています。 –

+0

'file:// some/path/to/a/file.txt'のような文字列がある場合は、' URLWithString: 'を使って' NSURL'を作成する必要があります。 '/ some/path/to/a/file.txt'のような文字列がある場合は、' fileURLWithPath: 'を使用する必要があります。 – rmaddy

関連する問題