如何检测NSString是否为null?
|
我有一段代码可以检测
NSString
是NULL
,nil
等。但是,它崩溃了。这是我的代码:
NSArray *resultstwo = [database executeQuery:@\"SELECT * FROM processes WHERE ready=\'yes\' LIMIT 0,1\"];
for (NSDictionary *rowtwo in resultstwo) {
NSString *getCaption = [rowtwo valueForKey:@\"caption\"];
if (getCaption == NULL) {
theCaption = @\"Photo uploaded...\";
} else if (getCaption == nil) {
theCaption = @\"Photo uploaded...\";
} else if ([getCaption isEqualToString:@\"\"]) {
theCaption = @\"Photo uploaded...\";
} else if ([getCaption isEqualToString:@\" \"]) {
theCaption = @\"Photo uploaded...\";
}
}
这是错误:
由于未捕获的异常\'NSInvalidArgumentException
\'而终止应用程序,原因:\'-[NSNull isEqualToString:]
:无法识别的选择器发送到实例0x3eba63d4
\'
难道我做错了什么?我需要采取其他方式吗?
没有找到相关结果
已邀请:
5 个回复
广躺椽
)的
值为
。 而ѭ1for用于C指针(类型type11ѭ)。 (最后,两者最终保持相同的值(
)。但是它们的类型不同。) 在Objective-C中:
(全部小写)为空 指向Objective-C对象的指针。
(大写)是空指针 到Objective-C类。
(全部大写)是指向的空指针 其他任何东西(就是C指针)。
是无法使用nil的情况下的单例(例如,向
s中添加/接收nil) 在Objective-C ++中: 以上所有内容,再加上:
(小写)或
(C ++ 11或更高版本)是指向C ++对象的空指针。 因此,要与
进行比较,您应该明确地与
(或分别为
)进行比较:
或者让ObjC / C为您隐式地执行此操作:
这是因为C中的每个表达式(并且Objective-C是其超集)都具有隐式布尔值:
现在,当检查
时,这显然不起作用,因为
返回指向
而不是
的单例实例的指针,因此它不等于
。 因此,要针对ѭ26进行检查,可以使用以下任一方法:
或(首选,请参见评论):
请记住,如果
恰好是
,则后者(利用消息调用)将返回
,尽管在形式上正确,但可能并非您所期望/想要的。 因此,如果需要(无论出于何种原因)同时对
/
和
进行检查,则必须将这两个检查结合起来:
有关形成等效肯定检查的帮助,请参阅De Morgan的定律和布尔求反。 编辑:NSHipster.com刚刚发表了一篇很棒的文章,介绍了nil,null等之间的细微差别。
傻寺俊擒
这将检查对象myNSString是否等于NSNull对象。
棠媳鳖
蹄寄噬非芹
你也可以
如果您想成为将来针对NSNull的新子类的证明。
捅瓶啡
这应该工作。