我使用以下代码从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。有人能让我朝着正确的方向前进吗?
答案 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
的课程。