对于无效的URL字符串,“NSURL URLWithString”方法不返回nil

时间:2016-12-23 08:43:09

标签: ios objective-c ios10

我遇到了“NSURL URLWithString”方法的问题,

如果url字符串无效,我希望在使用上述方法时获得nil。但它返回空值而不是。
我附上了下面的代码示例。

$datem =  date("m", strtotime($date));
if($datem==$Tb){
//echo '<td>echo some result</td>'; 
}

其他信息:

  • 我正在使用XCode版本8.1。
  • 我也在iOS版本中测试过 (8,9,10)在设备和模拟器中。
  • 截至目前,我已通过使用“canOpenURL”来检查结果NSURL并避免进一步执行。但我需要知道为什么会出现这个问题。

2 个答案:

答案 0 :(得分:-1)

目标C

[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

<强>夫特

let url = NSURL(string: urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!)

答案 1 :(得分:-2)

您正在分配一个空字符串。 检查字符串的长度,知道它是否为空。

NSString *sampleURLString = @"";
    if (sampleURLString.length <=0) {
        sampleURLString = nil;

    }
    NSURL *sampleURL = [NSURL URLWithString:sampleURLString];

    NSLog(@"Sample url string : %@", sampleURLString);
    NSLog(@"Sample url : %@", sampleURL); 

<强>输出:

示例网址字符串:(null)

示例网址:( null)

If you want to validate a URL

if (sampleURL && sampleURL.scheme && sampleURL.host) {

    NSLog(@"valid: %@", sampleURLString);

} else{

NSLog(@"Invalid: %@", sampleURLString);
}