如何检查NSURL是否包含NSString null?

时间:2012-09-29 17:11:46

标签: objective-c ios nsstring null nsurl

我使用以下代码从NSDictionary获取NSString,然后将其强制转换为NSUrl:

NSURL * url = [NSURL URLWithString:[self.item objectForKey:@"website"]];

NSDictionary self.item来自Web服务器,使用JSON数据正确填充。 NSDictionary中的所有其他对象都可以正常工作。

但有时Web服务器会传递一个文本为“null”的网站网址,因为该对象没有填充网站。从调试中我了解到NSURL对象可以包含一个文本为“null”的网址。但是我如何防止这种情况,或者我如何编写一个if语句来检查这个?

我尝试了以下内容:

NSString * niks = [eventUrl absoluteString];
if(niks == @"null")
{
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Event" message:@"Event heeft geen website" delegate:nil cancelButtonTitle:@"Oke" otherButtonTitles:@"Oke", nil];
    [message show];
}
else
{
    [webView loadRequest:[NSURLRequest requestWithURL:eventUrl]];
    NSLog(@"%@",eventUrl);
}

但是这不起作用,它总是将url直接传递给webview。有人能让我朝着正确的方向前进吗?

4 个答案:

答案 0 :(得分:3)

您的比较;

if(niks == @"null")

仅比较指针是否相等(即两者是否是相同的字符串对象实例)。由于一个是常量而另一个是从服务器提取的JSON动态创建的,因此不太可能。

要比较两个字符串的内容,您应该这样做;

if([niks isEqualToString:@"null"])

对于口渴的链接,here is the [NSString isEqualToString:] documentation

答案 1 :(得分:1)

要进行字符串比较,需要执行[niks isEqualToString:@“null”],这就是第一个条件被破坏的原因。 您也可以使用[niks RangeOfString:@“null”];

答案 2 :(得分:0)

我相信你可以这样做:

id str = [self.item objectForKey:@"website"];
if([str isMemberOfClass[NSNull class]]) { 
    ... its null
}

JSON转换器都将null更改为NSNull对象(根据我的经验)。

答案 3 :(得分:0)

我并不是百分百清楚自己的记忆,但我遇到了[NSDictionary objectForKey:]实际返回NSNull类实例而不是“null”字符串的情况。

如果是这种情况,您可以使用[self.item objectForKey:@"website"]方法查看isKindOfClass的课程。