Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 检查包含“URL”的字符串;http://quot;_Objective C_Ios_Cocoa Touch_Nsstring_Nsurl - Fatal编程技术网

Objective c 检查包含“URL”的字符串;http://quot;

Objective c 检查包含“URL”的字符串;http://quot;,objective-c,ios,cocoa-touch,nsstring,nsurl,Objective C,Ios,Cocoa Touch,Nsstring,Nsurl,我试图检查用户输入的URL,但我正在与一些错误和警告作斗争 -(BOOL) textFieldShouldReturn:(UITextField *)textField { //check "http://" NSString *check = textField.text; NSString *searchString = @"http://"; NSRange resultRange = [check rangeWithString:searchString]

我试图检查用户输入的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”条件下未使用的变量
urldaddress
(用于两者)
urlAddress
未声明:在
URLRequest


有人知道该怎么办吗?

我相信你想要这个方法。

要摆脱你的
urlAddress
警告,你应该在上面声明
NSURL*urlAddress
if..else

NSURL *urlAddress = nil;
if (result) {  
    urlAddress = [NSURL URLWithString: textField.text];    
} else {   
    NSString *good = [NSString stringWithFormat:@"http://%@", [textField text]];  
    urlAddress = [NSURL URLWithString: good];     
}   

NSString响应
rangeOfString:
,而不是
rangeWithString:

变量urlAddress在
if
语句和
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];

如果有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;
}
用这个

NSString *stringUrl = url.absoluteString;

if ([stringUrl localizedCaseInsensitiveContainsString:@"your string"]) {
    //do something
}

它首先将url转换为字符串,然后检查此url是否包含您的字符串

最好使用[stringUrl localizedCaseInsensitiveContainsString:@“gif”]
NSString *stringUrl = url.absoluteString;

if ([stringUrl localizedCaseInsensitiveContainsString:@"your string"]) {
    //do something
}