4

NSURL クラス リファレンスで提供されているメソッドを使用して、スキーム、パス、およびパラメーターを取得するために URL を解析しようとしています。ただし、この方法で URL を作成すると (スキームの後に二重スラッシュはありません)、次のようになります。    

NSString *urlString = @"customScheme:myPath?parameter=hello&other_parameter=12";
NSURL *url = [NSURL URLWithString:urlString];

NSURL からこれらの値を取得できません。つまり、メソッド

path
query

ゼロを返します。

次のように二重スラッシュを追加すると:

NSString *urlString = @"customScheme://myPath?parameter=hello&other_parameter=12";
NSURL *url = [NSURL URLWithString:urlString];

すべて正常に動作します。どうしてこれなの?

ありがとう!

4

2 に答える 2

2

これらの方法は、Apple のドキュメントで非常に明確に文書化されています。

path RFC 1808 に準拠した URL のパスを返します。

- (NSString *)path

stringByReplacingPercentEscapesUsingEncoding:メソッドでエスケープされていない URL のパス。受信者が RFC 1808 に準拠していない場合は、 を返しますnil

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

また、RFC 1808 は、有効な相対 URL を構成するものについて非常に明確です。

<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>

http://www.w3.org/Addressing/rfc1808.txt

URL などを解析したい場合はmailto:、それ以外の何かを使用する必要がありますNSURL

于 2012-08-31T23:44:15.833 に答える