如果字符串没有给出任何值,则显示null的标签....如果没有字符串给出的值,则不显示任何内容

时间:2012-02-29 07:55:37

标签: objective-c uilabel

我正在使用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];

7 个答案:

答案 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)

你可以使用

检查null

if(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

漂亮而干净的解决方案。