2

iOSアプリとFoundationツールで次の行を試しました。

[@"http://www.apple.com/" stringByAppendingPathComponent:@"/"]

私が得る結果は次のとおりです。

@"http:/www.apple.com"

言い換えれば、stringByAppendingPathComponent(私が期待した)何も追加しないことに加えて、最後のもの/(これはOKと見なすことができます)飲み込み、URLスキームの1つを飲み込みますが/、これは私の本ではまったくOKではありません。

これは私だけに起こっているのですか?バグレポートを提出する前に、愚かなことを見逃しましたか?

4

1 に答える 1

3

まず、次のドキュメントに注意してくださいstringByAppendingPathComponent:

このメソッドはファイルパスでのみ機能することに注意してください(たとえば、URLの文字列表現では機能しません)。

したがって、サポートすることを意図していない場合にこのメソッドを使用しています。

ただし、ファイルパスで使用すると、同じ動作が示されます。

[@"/abc/" stringByAppendingPathComponent:@"/"];     // -> @"/abc"
[@"/abc/" stringByAppendingPathComponent:@"/def/"]; // -> @"/abc/def"

したがって、このメソッドは、スラッシュが元のパスまたは引数の一部であったかどうかに関係なく、末尾のスラッシュで終わらないパスを常に優先するようです。でも、それをバグと呼ぶかどうかはわかりません。結局のところ、両方ともファイルシステムで同じ項目/abc/abc/指定しているのではないでしょうか。

しかし、正確な動作をより適切に文書化できるように思えます。

于 2011-04-06T15:22:34.513 に答える