如何检查objectForKey返回的NSString是否为“”目标c

时间:2012-11-03 17:25:31

标签: objective-c ios

我不确定如何检查NSString是否为空,我有这个代码......

 NSString *imageName = [myItem objectForKey:@"iconName"];

        if(imageName == @"")
        {
        }

当我在myItem对象上进行打印时,它会显示为..

iconName = "";

在NSString * imageName行,我在控制台的xcode中注意到它

  

“变量不是NSString”

我没有得到iconName作为NSString保存并存储在parse.com数据库中。

当我运行该代码时,它似乎没有意识到imageName =“”;

4 个答案:

答案 0 :(得分:3)

比较字符串时应使用此代码块:

if ([imageName isEqualToString:@""]){
}

答案 1 :(得分:3)

您需要使用isEqualToString来比较两个字符串。如果你只是使用==那么你正在比较两个指针。

您还可以通过以下方式检查您收到的对象是否为NSString:

if ([imageName isKindOfClass:[NSString class]])

希望这有帮助。

答案 2 :(得分:2)

虽然你已经有了一些答案,但这是我的看法。

首先,您的警告(而不是错误)可以像这样修复:

 NSString *imageName = (NSString *)[myItem objectForKey:@"iconName"];

然后,我会检查以确保字符串不是nil 它不是空白。在objective-C中执行此操作的最简单方法是检查字符串的长度,因为如果它为零则返回0,如果为空,则返回0:

if([imageName length] == 0)
{
   // This is an empty string.
}

正如@jlehr指出的那样,如果imageName可能实际上没有存储为字符串,那么为了防止崩溃,您需要先检查。 (这可能需要也可能不需要,具体取决于您的应用程序的逻辑):

if ([imageName isKindOfClass:[NSString class]] 
{
    if([imageName length] == 0)
    {
        // This is an empty string.
    }
}

答案 3 :(得分:0)

"variable is not NSString"可能是因为objectForKey:返回id

应使用[imageName isEqualToString:@""]