我正在尝试实施以下代码但没有成功。基本上,我想将显示名称设置为使用thisPhoto.userFullName
,如果它不是“空白”,则显示thisPhoto.userName
。
UILabel *thisUserNameLabel = (UILabel *)[cell.contentView viewWithTag:kUserNameValueTag];
NSLog(@"user full name %@",thisPhoto.userFullName);
NSLog(@"user name %@",thisPhoto.userName);
if (thisPhoto.userFullName && ![thisPhoto.userFullName isEqual:[NSNull null]] )
{
thisUserNameLabel.text = [NSString stringWithFormat:@"%@",thisPhoto.userFullName];
}
else if (thisPhoto.userFullName == @"")
{
thisUserNameLabel.text = [NSString stringWithFormat:@"%@",thisPhoto.userName];
}
目前,即使userFullName
为空,我的userName
仍未显示在屏幕上。
答案 0 :(得分:5)
我更喜欢
if([thisPhoto.userFullName length])
答案 1 :(得分:3)
使用-length
。只要字符串为nil
或空字符串@""
,这将为0。您通常希望以相同的方式处理这两种情况。
NSString *fullName = [thisPhoto userFullName];
thisUserNameLabel.text = [fullName length]? fullName : [thisPhoto userName];
答案 2 :(得分:2)
如果我假设thisPhoto.userFullName
是NSString
,您可以尝试
[thisPhoto.userFullName isEqualToString:@""]
答案 3 :(得分:2)
另外两个答案是正确的,并打败了我。而不是仅仅重复他们所说的话 - 我会指出别的东西。
[NSNull null]
用于将nil
值存储在不允许NSArray
的集合类(NSSet
,NSDictionary
,nil
)中值存储在其中。
因此,除非您检查从集合中获取的值,否则无法检查[NSNull null]
答案 4 :(得分:1)
我在这里看到几点
首先 - 如果您的userFullName
实例变量为NSString*
,那么与nil
进行简单比较就足够了:
if (thisPhoto.userFullName)
当然,除非你明确地将它设置为[NSNull null]
,然后需要你写的条件。
第二 - 比较字符串是用isEqualToString:
方法完成的,所以第二个条件应该重写为:
if ([thisPhoto.userFullName isEqualToString:@""]) {
...
}
第三 - 存在逻辑缺陷 - 如果你的userFullName
IS等于空字符串(@""
),代码仍会落到第一个分支。即空字符串(@""
)不等于[NSNull null]
或简单的nil。因此,您应该写入分支 - 一个用于处理空字符串和nil,另一个用于处理正常值。因此,通过一些重构,您的代码将变为如下:
thisUserNameLabel.text = [NSString stringWithFormat:@"%@",thisPhoto.userFullName];
if (!thisPhoto.userFullName || [thisPhoto.userFullName isEqualToString:@""]) {
// do the empty string dance in case of empty userFullName.
}
答案 5 :(得分:1)
// this assumes userFullName and userName are strings and that userName is not nil
thisUserNameLabel.text = [thisPhoto.userFullName length] > 0 ? thisPhoto.userFullName : thisPhoto.userName;
答案 6 :(得分:1)
“空白”表示@""
,还有@" "
或@"\n"
。所以我会修剪userFullName并检查该字符串的长度。
if ([[thisPhoto.userFullName stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) {
// it's blank!
}