在 Objective C 中检查 NSString 的 NOT <null> 值的条件

Posted

技术标签:

【中文标题】在 Objective C 中检查 NSString 的 NOT <null> 值的条件【英文标题】:Condition for checking NOT <null> value for NSString in Objective C 【发布时间】:2012-01-05 06:11:04 【问题描述】:

代码:

NSString *tempPhone = [NSString stringWithFormat:@"%@", [personDict objectForKey:kPhoneKey]];
NSLog(@"NSString *tempPhone = %@",tempPhone);

输出:

NSString *tempPhone = <null>

现在我想添加 if 条件,对于 not null;我尝试了以下方法:

if (tempEmail != NULL)
if (tempPhone != Nil)
if (tempPhone != nil)
if (![tempPhone compare:@"<null>"])
if (tempPhone != (NSString*)[NSNull null])

我也查了this Post.

它们都不适合我。我哪里错了??

【问题讨论】:

你实现if([tempPhone length]==0)条件了吗?我认为这会对你有所帮助。 表示您正在获取具有空值的字符串长度? 是的,它是“6”。我认为这是一个包含 "" 的字符串 【参考方案1】:

试试下面的代码

id phoneNo = [personDict objectForKey:kPhoneKey];

if( phoneNo && ![phoneNo isKindOfClass:[NSNull class]] )

    NSString *tempPhone = [NSString stringWithFormat:@"%@", [personDict objectForKey:kPhoneKey]];
    NSLog(@"NSString *tempPhone = %@",tempPhone);

else

    NSLog(@"NSString *tempPhone is null");

【讨论】:

检查 NSNull 类是对运行时资源的浪费,因为在文档中明确指出 NSNull 是一个单例。最好做 [[NSNull null] isEquals:phoneNo] 或只是 phoneNo == [NSNull null]。两者都进行指针检查,而前者提供了清晰度。 developer.apple.com/library/mac/documentation/Cocoa/Reference/…【参考方案2】:

我认为您的 personDict 没有键 kPhoneKey 的对象,因此它返回 nil。当您使用%@ 格式化nil 时,您会得到字符串“(null)”。

id object = [personDict objectForKey:kPhoneKey];
if (object) 
    NSString *tempPhone = [NSString stringWithFormat:@"%@", object];
    NSLog(@"NSString *tempPhone = %@",tempPhone);
 else 
    // object is nil

【讨论】:

对象不是零;它实际上是一个字符串,值为“”。谢谢你的时间。【参考方案3】:
if (tempPhone != nil || [tempPhone isEqualToString:@"(null)"])

为我工作。

【讨论】:

【参考方案4】:

是这样的:

if (![tempPhone isKindOfClass:[NSNull class]] && tempPhone != nil)

【讨论】:

【参考方案5】:

if ([str_name isKindOfClass:[NSNull class]])

为我工作...

【讨论】:

【参考方案6】:

我检查了 webResponse(在我的例子中是 JSON)。 它向我返回了带有值的字符串:

<null>       

所以,以下条件对我有用:

if (![tempPhone isEqualToString:@"<null>"])

感谢您的所有时间。谢谢。

【讨论】:

通常不是字符串。它是一个 NSNull 对象。 然后你像这样检查它:[tempPhone isKindOfClass:[NSNull class]]【参考方案7】:

因为compare 方法返回类型NSComparisonResult 定义为

enum _NSComparisonResult NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending;
typedef NSInteger NSComparisonResult;

如果字符串相同,则返回NSOrderedSame,其NSInteger值为0

因此,下面这行实际上意味着...

if (![tempPhone compare:@"<null>"]) // `tempPhone` is equals to `@"<null>"`

或者在更容易理解的解释中,如果tempPhone 的值等于@"&lt;null&gt;"

你应该写成

if ([tempPhone compare:@"<null>"] != NSOrderedSame)

if (![tempPhone isEqualString:@"<null>"])

【讨论】:

【参考方案8】:

如果字符串具有空值。 NSLog 中的示例.. 以这种方式实现..

  if ([StringName isKindOfClass:[NSNULL Class]]) 

   
   else 

   

【讨论】:

【参考方案9】:

首先我们需要检查字符串长度。

如果 (tempPhone.length == 0) `

//你的字符串有空值 (E.x, (null))

其他

// 你在这个字符串中有一些值

`

【讨论】:

以上是关于在 Objective C 中检查 NSString 的 NOT <null> 值的条件的主要内容,如果未能解决你的问题,请参考以下文章

如何在目标c中检查用户是不是登录?

在 Objective C 中检查一个空的 JSON 键

Objective C检查元素是不是存在于Web视图中

如何在 ios Objective c 中检查推送通知是不是在后台模式下接收?

在 Objective C 中检查 NSString 的 NOT <null> 值的条件

如何获取图像objective-C的路径