2012-05-17 24 views
6

JSONをロードしていますが、私は"URL": "",を確認したいのですが、jsonのIDが空でない場合があります。iOSの場合、URLが空であるかどうかをチェックする方法

if(URL == HOW TO CHECK IF EMPTY?) 
{ 

} 
else 
{ 

} 

エラー:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array' 
*** First throw call stack: 
+1

それはすでに解析されていますか? URLはNSURLかNSStringか? –

+0

URLはURLです。 – Jones

+1

はい、どんなタイプのオブジェクトですか?受け入れられた答えから、それはNSStringでした。 –

答えて

5

うーんは、

if ([URL isEqualToString:@"The URL?"]) { 
+0

ジョーンズは辞書 "URL"に空白の値をチェックする方法を質問しています( ""): ""、 –

3
if (URL == [NSNull null]) { 
    //... 
} else { 
    //... 
} 

それとも

if (URL == nil) { 
    //... 
} else { 
    //... 
} 

またはURL

2

の長さを確認してくださいURLオブジェクトが文字列である場合は、いずれかを使用することができ、

if([string length] == 0) { //empty } 

または

if([string isEqualToString:@""]) { // empty } 

URLオブジェクトがNSURLある場合は、使用することができます。

if([[url absoluteString] isEqualToString:@""]) { //empty } 
0

それが保存されている方法に応じて、それがnullである場合は、検証する必要があるかもしれません(URL == nil )、または文字列が空の場合。あなたのURLは、NSStringの中に保存されていると仮定すると、あなたのような何かのために行くだろう:私は非常に慎重になる傾向があり、JSONデータを扱う場合

BOOL empty = URL == nil || [URL length] == 0; 
2

を試してみてください。 NSDictionaryに逆シリアル化されたJSONがあるとします。これで、キー "URL"に関連付けられた文字列を辞書から抜き出してNSURLにする必要があります。また、私はJSONや文字列の値に100%自信がありません。

私はこのようなものだろう。この後

NSURL *URL = nil; 
id URLObject = [JSON valueForKey:@"URL"]; 
if ([URLObject isKindOfClass:[NSString class]] && [URLObject length] > 0) { 
    URLObject = [URLObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    URLObject = [URLObject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    URL = [NSURL URLWithString:URLObject]; 
} 

を、URLはゼロまたは有効なURLのいずれかを持っています。 -isKindOfClass:NSDictionary、NSArray、NSNumber、またはNSNullの値を除外します。 -length> 0は、空の文字列をフィルタリングします(わかっているように、NSURLを混乱させる可能性があります)。 URLエスケープを再エンコードして部分的にエンコードされたURLを処理するという追加のパラノイアが処理されます。

0

これを試してください。それは私のために働いた。

NSURL *url; 
if ([url path]) 
{ 
    // url is not empty 
} 
else 
{ 
    // url is empty 
} 
0
if (url.absoluteString.length==0) 
{ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error" message:@"Please enter a url" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 
    [alert show]; 
} 
関連する問題