检查包含“http://”URL的字符串
我正在尝试检查用户输入的URL,但我正在反对一些错误和警告。
-(BOOL) textFieldShouldReturn:(UITextField *)textField { //check "http://" NSString *check = textField.text; NSString *searchString = @"http://"; NSRange resultRange = [check rangeWithString:searchString]; BOOL result = resultRange.location != NSNotFound; if (result) { NSURL *urlAddress = [NSURL URLWithString: textField.text]; } else { NSString *good = [NSString stringWithFormat:@"http://%@", [textField text]]; NSURL *urlAddress = [NSURL URLWithString: good]; } // open url NSURLRequest *requestObject = [NSURLRequest requestWithURL:urlAddress]; }
他们说:
NSString
可能不响应-rangeWithString
条件“if … else”中的未使用变量urlAddress
(对于两者)
urlAddress
未声明:在URLRequest
有谁知道该怎么办?
NSString响应rangeOfString:
,而不是rangeWithString:
.
变量urlAddress在if
语句和else
语句中else
声明。 这意味着它只存在于该范围内。 离开if / else语句后,变量就消失了。
对于URL,最好是以方案开头(如“http://”),并且您的代码很乐意接受apple.http://.com作为有效。
您可以使用hasPrefix:
方法,如下所示:
BOOL result = [[check lowercaseString] hasPrefix:@"http://"]; NSURL *urlAddress = nil; if (result) { urlAddress = [NSURL URLWithString: textField.text]; } else { NSString *good = [NSString stringWithFormat:@"http://%@", [textField text]]; urlAddress = [NSURL URLWithString: good]; } NSURLRequest *requestObject = [NSURLRequest requestWithURL:urlAddress];
if ( [[url lowercaseString] hasPrefix:@"http://"] ) return url; else return [NSString stringWithFormat:@"http://%@", url];
我相信你想要rangeOfString方法。
要删除urlAddress
警告,您应该在if..else
上面声明NSURL *urlAddress
:
NSURL *urlAddress = nil; if (result) { urlAddress = [NSURL URLWithString: textField.text]; } else { NSString *good = [NSString stringWithFormat:@"http://%@", [textField text]]; urlAddress = [NSURL URLWithString: good]; }
如果您有NSURL将其转换为NSString
NSString stringURL = url.absoluteString
然后检查此NSString是否包含带有此代码的http://
[stringURL containsString: @"http://"] - (BOOL)containsString:(NSString *)string { return [self containsString:string caseSensitive:NO]; } - (BOOL)containsString:(NSString*)string caseSensitive:(BOOL)caseSensitive { BOOL contains = NO; if (![NSString isNilOrEmpty:self] && ![NSString isNilOrEmpty:string]) { NSRange range; if (!caseSensitive) { range = [self rangeOfString:string options:NSCaseInsensitiveSearch]; } else { range = [self rangeOfString:string]; } contains = (range.location != NSNotFound); } return contains; }