Jim*_*ler 14 iphone objective-c ios
在IOS下,我希望识别出NSURL相同或略有不同但引用相同目的地的s 对.例如http://google.comVS http://google.com/.
isEquals报告这些NSURL是不同的.我也无法找到获得NSURL的"规范"或"规范化"形式的方法来比较这些形式.
NSURL *a = [NSURL URLWithString:@"http://google.com"];
NSURL *b = [NSURL URLWithString:@"http://google.com/"];
if([a isEqual:b]) {
NSLog(@"Same"); // Not run
}
if([[a absoluteURL] isEqual:[b absoluteURL]]) {
NSLog(@"Same"); // Still not run
}
if([[a URLByStandardizingPath] isEqual:[b URLByStandardizingPath]]) {
NSLog(@"Same"); // Still not run
}
Run Code Online (Sandbox Code Playgroud)
如何在忽略不影响URL意图的字符串差异的同时比较两个NSURL?
Jer*_*myP 19
根据RFC 2616,http://google.com并且http://google.com/是等效的.这就是它所说的(第3.2.3节):
在比较两个URI以确定它们是否匹配时,客户端应该使用整个URI的区分大小写的八位字节比较,但有以下例外:
空的或未给出的端口等同于该URI引用的默认端口;
主机名的比较必须不区分大小写;
方案名称的比较必须不区分大小写;
空abs_path相当于abs_path为"/".
供参考,语法如下 http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
不幸的是,NSURL必须支持HTTP以外的方案,所以它不能假设RFC 2616提供了通用规则.我觉得你最好的解决办法是创建自己的比较方法的类别http网址是专门检查一个空的绝对路径.
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |