2011-06-30 22 views
5

ユーザーが入力したURLを確認しようとしていますが、いくつかのエラーと警告に対して闘っています。"http://"の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
urlAddress(両方のために) "...もし他に" 状態で-rangeWithString
未使用変数urlAddressに宣言されていない応答しないことがあります。URLRequest

誰も何をすべきか考えていますか?

答えて

19

NSStringのはrangeOfString:、ないrangeWithString:に応答します。

変数urlAddressは、ifステートメントとelseステートメントで宣言されています。それはそれがその範囲内にしか存在しないことを意味します。 if/elseステートメントを終了すると、変数はなくなります。

URLはスキーム(「http://」など)で始まる場合が最も適しており、コードではapple.http://.comが妥当であると喜んで受け入れます。あなたはNSURLは

NSString stringURL = url.absoluteString 

とNSStringのに変換している場合、このNSStringのは、HTTPが含まれているかどうかチェックし

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

rangeOfStringメソッドが欲しいと思います。あなたはif..elseNSURL *urlAddressを宣言する必要があり、あなたのurlAddress警告を取り除くために

0

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

あなたはこのように、代わりにhasPrefix:方法を使用することができます。 //このコードで

[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; 
} 
関連する問題