1

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

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

        if(imageName == @"")
        {
        }

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

iconName = "";

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

“变量不是 NSString”

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

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

4

4 回答 4

3

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

if ([imageName isEqualToString:@""]){
}
于 2012-11-03T17:31:04.560 回答
3

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

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

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

希望这可以帮助。

于 2012-11-03T17:31:30.187 回答
2

尽管您已经有了一些答案,但这是我的看法。

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

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

然后,我会检查以确保字符串不是nil 并且它不是空白的。在 Objective-C 中最简单的方法是检查字符串的长度,因为如果它为 nil,它将返回 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.
    }
}
于 2012-11-03T17:47:36.893 回答
0

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

应该使用[imageName isEqualToString:@""].

于 2012-11-03T17:31:57.327 回答