我有一段代码检测NSString
是否为NULL
,nil
等。但是,它崩溃。这里是我的代码:如何检测NSString是否为空?
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...";
}
}
而这里的错误:
Terminating app due to uncaught exception '
NSInvalidArgumentException
', reason: '-[NSNull isEqualToString:]
: unrecognized selector sent to instance0x3eba63d4
'
难道我做错了什么?我需要以不同的方式去做吗?
'rowtwo'的数据类型是什么?你为什么要发送'-valueForKey:'? – 2011-04-16 02:47:22
我会留下此评论以供进一步参考:'-valueForKey:'是一种KVC方法。在KVC中,'[NSNull null]'表示没有给定键的值。如果您在不需要KVC的上下文中使用'NSDictionary',请改用'-objectForKey:',否则当给定的键不存在时,它将返回'nil'而不是'[NSNull null]'字典。 – 2011-04-16 03:03:27
关于'-valueForKey:'和'-objectForKey:'之间区别的讨论,请参阅本堆栈溢出问题:http://stackoverflow.com/questions/1062183/objective-c-whats-the-difference-between-objectforkey -and-valueforkey – 2011-04-16 03:04:45