метка, отображающая ноль, если строка не дает никакого значения .... хотите ничего не отображать, если строка не имеет значения - PullRequest
3 голосов
/ 29 февраля 2012

Я использую метку для отображения данных из различных строк, но если строка не дает никакого значения, я хочу ничего не отображать в метке, но в приведенном ниже коде отображается «ноль», если sting не дает никакого значения. я не хочу отображать ноль в метке .... как я могу решить это.

where_do_you_hurt.text = [NSString stringWithFormat:@"%@,%@,%@,%@",appdelegate.hurt_head,appdelegate.hurt_Arm,
                          appdelegate.hurt_leg,appdelegate.hurt_chest,appdelegate.hurt_Back];

Ответы [ 7 ]

14 голосов
/ 29 февраля 2012

Для каждого значения, которое вы не хотите печатать (null), вам нужно указать пустую строку, если значение nil.Вы можете сделать это следующим образом:

foo = [NSString stringWithFormat:@"%@", (obj ? obj : @"")];

obj ? obj : @"" означает: если объект не nil (obj ?), тогда передайте объект (obj), в противном случае передайте пустую строку (: @"").

Альтернативой будет использование изменяемой строки, а затем выполните:

if (obj) {
    [foo appendFormat:@"%@", obj];
}
2 голосов
/ 29 февраля 2012

Если вы не хотите, чтобы для нулевых объектов отображалось «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 : @""];
0 голосов
/ 25 мая 2018

Вот макрос, который я использую для безопасной строки вместо получения строки «(null)» в UILabel, например:

#define SafeString(STRING) ([STRING length] == 0 ? @"" : STRING)

NSLog(@"%@", member.name); // prints (null) on UILabel

с макросом:

NSLog(@"%@", SafeString(member.name)); // prints empty string on UILabel

красивое и чистое решение.

0 голосов
/ 17 сентября 2014

импортируйте эти файлы непосредственно в ваш проект и используйте 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
0 голосов
/ 08 января 2014

Вот как я это сделал. Он не такой компактный, как другие, но я чувствую его более читабельным (что всегда для меня важнее).

Преимущество также заключается в удалении конечных пробелов в начале и конце.

// 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]];
0 голосов
/ 29 февраля 2012

вы можете проверить наличие нуля, используя

if (title == (id) [NSNull null] || title.length == 0) title = @ "Something";

0 голосов
/ 29 февраля 2012

О NSString ... [NSString stringWithFormat:@"%@", nil] войдет как (null)

Вы можете постепенно складывать текст, проверяя наличие нулевых значений.

OR

Вы можете инициализировать эти 4 свойства в приложении applelegate

- (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];
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...