在Objective-C格式字符串中使用三元操作符



我正在Objective-C中创建一个格式化的字符串。当其中一个值为null或空时,我想使用"。"代替。字符串值来自一个单例的属性,我试图使用三元运算符来做到这一点,但似乎失败了,因为我试图子字符串一个空字符串。下面是我的代码:

NSString *namelabel = [NSString stringWithFormat:@"%@",
                      [[[User_Singleton sharedUser] valueForKey:@"LastName"] substringToIndex:1] ? : @"."];

空字符串不会以这种方式被替换,因为在三元运算符中@""的计算结果为YES。要解决这个问题,您可以使用length属性,该属性对于nil@""都将为0。

可以:

NSString *namelabel = [NSString stringWithFormat:@"%@ %@",
    [[User_Singleton sharedUser] valueForKey:@"FirstName"],
    [[[User_Singleton sharedUser] valueForKey:@"LastName"] length] ?
    [[[User_Singleton sharedUser] valueForKey:@"LastName"] substringToIndex:1] : @"."];

最新更新