检查NSString是否为空/ null的防弹方法是什么?

时间:2015-04-22 23:48:33

标签: ios objective-c json

我正在构建一个应用程序,我想在UIButton中显示更清洁的联系信息(如果已将清理工作分配给作业),而不是显示UIButton。我已预约"具有更干净和更清洁的电话字符串作为属性的对象。我尝试用它来检查是否要打印字符串:

if(appt.cleanerPhone)

但这会打印出一个带有空电话号码的按钮,这对我们没什么帮助。所以我试过

if([appt.cleanerPhone length]>2)

昨天工作正常但刚开始崩溃我的应用程序时出现这条指向上面一行的错误消息:

2015-04-22 18:59:07.165 [640:158880] -[NSNull length]: unrecognized selector sent to instance 0x37afd690

我也试过

if(appt.cleanerPhone && [appt.cleanerPhone length]>2)

但是这会导致同样的错误。

作为参考,这些都来自解析的JSON对象 - > NSDictionary。如果没有清理器,这里是NSDictionary在NSLog中显示的内容:

    cleaner = "<null>";
    cleanerPhone = "<null>";

那么如何安全可靠地检查我的Appointment类的字符串对象是否为非空?上面两种方法有什么问题?

1 个答案:

答案 0 :(得分:1)

您正在从JSON或其他数据交换格式获取数据。转换会将null转换为[NSNull null]个对象。您需要在使用之前键入检查值。尝试:

if ([appt.cleanerPhone isKindOfClass:[NSString class]] && ([appt.cleanerPhone length] > 2)) {...}