我正在使用label来显示来自各种字符串的数据但是如果字符串没有给出任何值,我想在标签中没有显示任何内容但是在下面的代码中,如果sting没有给出值,则显示“null”。 我不想在标签中显示null ....我该如何解决呢。
where_do_you_hurt.text = [NSString stringWithFormat:@"%@,%@,%@,%@",appdelegate.hurt_head,appdelegate.hurt_Arm,
appdelegate.hurt_leg,appdelegate.hurt_chest,appdelegate.hurt_Back];
答案 0 :(得分:14)
对于您不希望打印(null)
的每个值,如果值为nil
,则需要提供空字符串。你可以这样做:
foo = [NSString stringWithFormat:@"%@", (obj ? obj : @"")];
obj ? obj : @""
表示:如果对象不是nil(obj ?
),则传递对象(obj
),否则传递空字符串(: @""
)。 / p>
替代方法是使用可变字符串,然后执行:
if (obj) {
[foo appendFormat:@"%@", obj];
}
答案 1 :(得分:2)
如果你不想为nil对象显示“null”,那么你需要提供一个空字符串:
where_do_you_hurt.text = [NSString stringWithFormat:
@"%@,%@,%@,%@",
appdelegate.hurt_head ? appdelegate.hurt_head : @"",
appdelegate.hurt_Arm ? appdelegate.hurt_Arm : @"",
appdelegate.hurt_leg ? appdelegate.hurt_leg : @"",
appdelegate.hurt_chest ? appdelegate.hurt_chest : @"",
appdelegate.hurt_Back ? appdelegate.hurt_Back : @""];
答案 2 :(得分:0)
关于NSString
... [NSString stringWithFormat:@"%@", nil]
将记录为(null)
您可以逐步将文本放在一起,测试零值。
OR
您可以在appdelegate中初始化这4个属性
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.hurt_head = [NSString string];
self.hurt_Arm = [NSString string];
self.hurt_leg = [NSString string];
self.hurt_chest = [NSString string];
self.hurt_back = [NSString string];
//...
}
答案 3 :(得分:0)
你可以使用
检查nullif(title ==(id)[NSNull null] || title.length == 0)title = @“Something”;
答案 4 :(得分:0)
这就是我做的。它不像其他人那么紧凑,但我觉得它更具可读性(这对我来说总是最重要的)。
它还具有从开头和结尾删除尾随空格的好处。
// Remove any nulls from the first or last name
firstName = [NSString stringWithFormat:@"%@", (firstName ? firstName : @"")];
lastName = [NSString stringWithFormat:@"%@", (lastName ? lastName : @"")];
// Concat the strings
fullName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
// Remove any trailing whitespace
fullName = NSString *newString = [oldString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
答案 5 :(得分:0)
直接在项目中导入这些文件,并使用rMtext而不是text属性。
#import <UIKit/UIKit.h>
@interface UILabel (NullHandling)
@property(nonatomic,copy) NSString *rMtext;
@end
#import "UILabel+NullHandling.h"
#import <objc/message.h>
@implementation UILabel (NullHandling)
-(void)setRMtext:(NSString *)text {
if(text!=nil){
text = [text stringByReplacingOccurrencesOfString:@"(null)" withString:@""];
self.text=text;
}
}
-(NSString *)rMtext {
return self.text;
}
@end
答案 6 :(得分:0)
这是我用于安全字符串的宏,而不是在UILabel上获取“(null)”字符串,例如:
#define SafeString(STRING) ([STRING length] == 0 ? @"" : STRING)
NSLog(@"%@", member.name); // prints (null) on UILabel
with macro:
NSLog(@"%@", SafeString(member.name)); // prints empty string on UILabel
漂亮而干净的解决方案。