2011-06-30 8 views
5

Próbuję sprawdzić adres URL wprowadzony przez użytkownika, ale walczę z niektórymi błędami i ostrzeżeniami.Sprawdź ciąg zawierający URL dla "http: //"

-(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]; 
} 

Mówią:

NSString może nie reagować na -rangeWithString
Niewykorzystane zmiennej urlAddress w warunku "if ... else" (dla obu)
urlAddress nierejestrowana: w URLRequest

Czy ktoś ma jakiś pomysł, co robić?

Odpowiedz

19

NSString odpowiada rangeOfString: nie rangeWithString:.

Zmienna urlAddress jest deklarowana zarówno w instrukcji if, jak i w instrukcji else. Oznacza to, że żyje tylko w tym zakresie. Po opuszczeniu instrukcji if/else zmienna zniknęła.

Dla adresu URL najlepiej, jeśli zaczyna się od schematu (np. "Http: //"), a kod z przyjemnością zaakceptuje nazwę apple.http: //.com jako prawidłową.

Można użyć metody hasPrefix: zamiast, jak to:

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]; 
0

Aby pozbyć się urlAddress ostrzeżeń powinien zadeklarować NSURL *urlAddress powyżej if..else:

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

Jeśli masz bibliotece NSURL przekonwertować go do NSString z

NSString stringURL = url.absoluteString 

Następnie sprawdzić, czy ten NSString zawiera http: // z tym kodem

[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; 
} 
Powiązane problemy