Ios &引用;NSURL URLWithString“;方法没有为无效的URL字符串返回nil

Ios &引用;NSURL URLWithString“;方法没有为无效的URL字符串返回nil,ios,objective-c,ios10,Ios,Objective C,Ios10,我面临“NSURL URLWithString”方法的问题 如果url字符串无效,我希望在使用上述方法时得到nil。但它返回的却是空值。 我已附上下面的代码示例 NSString *sampleURLString = @""; NSURL *sampleURL = [NSURL URLWithString:sampleURLString]; NSLog(@"Sample url string : %@", sampleURLString); NSLog(@"Sample url : %@",

我面临“NSURL URLWithString”方法的问题

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

NSString *sampleURLString = @"";
NSURL *sampleURL = [NSURL URLWithString:sampleURLString];

NSLog(@"Sample url string : %@", sampleURLString);
NSLog(@"Sample url : %@", sampleURL);
其他信息:

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

您正在分配一个空字符串。 检查字符串的长度以确定它是否为空

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

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

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

目标C

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

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

sampleURLString传递您的urlhere@HimanshuMoradiya:当传递任何URL(如“”“URLWithString”)时,函数工作正常并返回有效的NSURL,但只有当我像上面那样传递空URL字符串时,我才不会像预期的那样得到零。你在使用webview吗?@Himanshumuradiaya:是,是的。那么您必须使用UIwevbviewDelagates方法更新您的问题
let url = NSURL(string: urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!)