2012-11-11 2 views

Répondre

4

Juste pour proposer une alternative et plus solution compacte:

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

Donc, contrairement à la solution de mundi que:

  1. crée un tableau de toutes les chaînes qui peuvent être utilisés;
  2. crée un prédicat qui différencie les chaînes que vous voulez et les chaînes que vous ne voulez pas;
  3. crée un second tableau en filtrant le premier en utilisant le prédicat;
  4. demande que tous les éléments du second tableau soient collés ensemble avec une chaîne et un retour chariot entre les deux.

Il y a évidemment plus d'étapes là-dedans, donc ça va coûter un peu plus cher mais dans la plupart des cas, vous n'avez vraiment pas besoin de vous soucier de ces choses.

2

Si vous transmettez @"", rien ne s'affichera de toute façon, donc ce ne serait pas le problème. Donc, je suppose que vous ne voulez pas non plus les sauts de ligne si la chaîne est vide.

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]; 
} 
Questions connexes