null,nill是Objective-C中的字符串类型
在字典中,电子邮件属性值包含空值。我的问题是什么类型的零?->null,nill是Objective-C中的字符串类型,objective-c,error-handling,runtime-error,Objective C,Error Handling,Runtime Error,在字典中,电子邮件属性值包含空值。我的问题是什么类型的零?->如果比较email==nil | | email==[NSNull null]?您应该检查键@“email”是否包含任何值(如果是字符串) 如果要检查对象是否为零或空,请执行以下操作 NSString *email=dic[@"email"]; if (email) { //do anything with email } 或者,您可以对任何对象调用[Obj iskindof class:[NSNull class]]。这里
如果比较email==nil | | email==[NSNull null]
?您应该检查键@“email”是否包含任何值(如果是字符串)
如果要检查对象是否为零或空,请执行以下操作
NSString *email=dic[@"email"];
if (email) {
//do anything with email
}
或者,您可以对任何对象调用
[Obj iskindof class:[NSNull class]]
。这里有几个不同于Objective-C透视图的值:
nil
(在其他语言中也称为null
)[NSNull null]
(特殊标记值对象)@“
(空字符串)@“null”
(只有一个包含4个字符的字符串)dataDic
,并且您知道应用程序处理得很好,那么您不必检查所有案例。只检查你想要的。例如,如果您的应用程序只将非空字符串写入字典,但有时“电子邮件”不在字典中,则您只需选中nil
,因为objectForKey
如果值不在字典中,则返回nil
另一方面,如果您从第三方API获得了dataDic
,例如从JSON解码,那么您应该进行全面检查:
{“email:null}
nil
if (!email || email == (id)[NSNull null]) {
//email unavailable
}
请注意,在指定给UILabel文本之前,您可能不必检查空字符串或nil,因为它们工作正常,只需擦除标签文本:
NSString *emailStr = nil;
id emailObj = [dataDic objectForKey:@"email"];
if ([emailObj isKindOfClass:[NSString class]]) {
emailStr = emailObj;
}
您应该使用
[email isKindOfClass:NSString.class]&&email.length!=0
instead检查email
是否为字符串,然后再检查其长度。我在问题前面提到过这一点。这只是给他一个方向顺便说一句,威勒克,你是对的。
NSString *emailStr = nil;
id emailObj = [dataDic objectForKey:@"email"];
if ([emailObj isKindOfClass:[NSString class]]) {
emailStr = emailObj;
}
self.emailLbl.text = @"";
self.emailLbl.text = nil; // another way to erase