[myDictionary objectForKey:kYourKey];
返回NSString
对象,但是代码如下:
if (![[myDictionary objectForKey:kYourKey] isEqualToString:@"<null>"])
{
//Conditional Code.
}
让我退出了应用程序。但是以下工作非常好:
NSString *tempStr = [NSString stringWithFormat:@"%@", [myDictionary objectForKey:kYourKey]];
if (![tempStr isEqualToString:@"<null>"])
{
//Conditional Code.
}
这有什么区别?
答案 0 :(得分:3)
实际上并没有返回字符串,通过使用stringWithFormat,您将null转换为字符串@"<null>"
。这个测试可能更合适,
id testObject = [myDictionary objectForKey:kYourKey];
if(testObject != nil && ![testObject isKindOfClass:[NSNull class]]){
//Conditional Code
}
修改强>
[NSNull null]也是一个单例,因此您可以将上述测试转换为更紧凑的测试。
id testObject = [myDictionary objectForKey:kYourKey];
if(testObject == [NSNull null]){
//Conditional Code
}
答案 1 :(得分:2)
尝试
po [myDictionary objectForKey:kYourKey]
在调试器中,或
NSLog(@"%@", NSStringFromClass([[myDictionary objectForKey:kYourKey] class]);
我的猜测是该对象不是NSString
,而是NSNull
。
编辑:是的。我错过了你的上一条评论。确实是NSNull
。
答案 2 :(得分:-2)
的类型转换
if(![((NSString*)[myDictionary objectForKey:kYourKey]) isEqualToString:@"<null>"])