使用iOS,如何检查URL是否为空

时间:2012-05-17 13:05:01

标签: ios cocoa-touch url

我正在加载一个JSON,但是我想检查json中的"URL": "",是否为空,有时ID是空的,我该怎么检查?

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:

9 个答案:

答案 0 :(得分:6)

嗯,试试

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

答案 1 :(得分:4)

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

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

或检查网址长度

答案 2 :(得分:4)

如果URL对象是字符串,则可以使用

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

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

如果URL对象是NSURL,您可以使用:

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

答案 3 :(得分:2)

使用JSON数据时,我会非常小心。假设我将一个JSON反序列化为NSDictionary。有了这个,我需要从字典中提取与键“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将具有nil或有效URL。 -isKindOfClass:清除值为NSDictionary,NSArray,NSNumber或NSNull。 - 长度> 0过滤掉空字符串(如你所知,它可以搞乱NSURL)。解码的额外偏执然后重新编码URL转义处理部分编码的URL。

答案 4 :(得分:0)

根据其存储方式,您可能需要验证它是否为空(URL == nil)或字符串是否为空。假设您的URL存储在NSString中,您可以使用以下内容:

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

答案 5 :(得分:0)

试试这个。它对我有用。

NSURL *url;
if ([url path])
{
    // url is not empty
}
else
{
    // url is empty
}

答案 6 :(得分: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];
}

答案 7 :(得分:0)

对于swift 3和swift 4,请使用此

var UrlUploadVideo = NSURL()

if UrlUploadVideo.absoluteString == "" {
     // your code
}

答案 8 :(得分:0)

guard let url = URL(string: urlStr) else { return }