12

NSStringが有効な URL であるかどうかを確認して、NSURL変数に解析できるようにしたいのですが、これを行う簡単な方法はありますか? :)

CRASH チェック中に何故かアプリがクラッシュする.....

NSURL *shortURL = [[NSURL alloc] initWithString:data];
if(shortURL == nil)
{
    NSLog(@"INVALID");
}
else {
    NSLog(@"COOOL");
}

コンソールにこのエラーが表示されます.....

* キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。 、8391739、8391578、2898550、3152497、12262、12183、27646、2662269、2661144、2454790485、2454790162)

4

3 に答える 3

17

以下のメソッドを使用して、NSString testString が有効な URL であるかどうかを確認しています。

NSURL *testURL = [NSURL URLWithString:testString];
if (testURL && [testURL scheme] && [testURL host])
{
    NSLog(@"valid");
}
{
    NSLog(@"not valid");
}

スキームは、URL のプレフィックスをテストします。例: http://、https://、または ftp://

ホストは、URL のドメインをテストします (例: google.com または images.google.com)。

注: これでもいくつかの誤検知が発生します。たとえば、http://google,comをチェックすると (カンマに注意してください)、有効な値が返されますが、NSURL が nil でない ( is not nil) かどうかをチェックするよりも間違いなく正確です[NSURL urlWithString:@"banana"]

于 2015-08-08T12:59:47.250 に答える
11

編集:以下の答えは真実ではありません。(Apple ドキュメント: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html )


NSURLは、渡された URL が有効でない場合に返しURLWithStringます。nilしたがって、戻り値を確認するだけで、URL が有効かどうかを判断できます。

例:

NSURL *url = [NSURL URLWithString:urlString];
if(url){ NSLog("valid"); }
于 2010-03-01T19:12:47.313 に答える