2012-11-11 27 views

回答

4

只是提出另一种更紧凑的解决方案:

[[@[self.message1, self.message2, self.message3] 
    filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]] 
      componentsJoinedByString:@" \n"]; 

所以不像曼迪的解决方案:

  1. 创建一个可使用的所有字符串数组;
  2. 创建一个谓词来区分你想要的字符串和你不想要的字符串;
  3. 通过使用谓词过滤第一个数组来创建第二个数组;
  4. 要求将第二个数组中的所有项目用字符串和换行符粘在一起。

显然还有更多的步骤有那么它会花费多一点,但在大多数情况下,你真的不需要关心镍和角钱的东西。

2

如果您通过@"",则无论如何不会显示任何内容,因此不会出现问题。所以我假设你也不希望换行符在字符串为空的情况下。

NSMutableString *s = [NSMutableString string]; 
if (self.message1 && self.message1.length) { 
    [s appendFormat:@"%@ \n", self.message1]; 
} 
if (self.message2 && self.message2.length) { 
    [s appendFormat:@"%@ \n", self.message2]; 
} 

if (self.message3 && self.message3.length) { 
    [s appendFormat:@"%@ \n", self.message3]; 
} 
相关问题