188 votes

Comment concaténer des NSAttributedStrings ?

J'ai besoin de rechercher certaines chaînes et de définir certains attributs avant de fusionner les chaînes, donc avoir NSStrings -> Concaténer les -> Faire NSAttributedString n'est pas une option, y a-t-il un moyen de concaténer attributedString à un autre attributedString ?

4voto

fatuhoku Points 632

Si vous utilisez Cocoapods, une alternative aux deux réponses ci-dessus qui vous permet d'éviter la mutabilité dans votre propre code est d'utiliser l'excellent programme NSAttributedString+CCLFormat catégorie sur NSAttributedString qui vous permet d'écrire quelque chose comme :

NSAttributedString *first = ...;
NSAttributedString *second = ...;
NSAttributedString *combined = [NSAttributedString attributedStringWithFormat:@"%@%@", first, second];

Bien sûr, il utilise juste NSMutableAttributedString sous les couvertures.

Il présente également l'avantage d'être une fonction de formatage à part entière, ce qui lui permet de faire bien plus que d'assembler des chaînes de caractères.

1voto

gaussblurinc Points 1481
// Immutable approach
// class method

+ (NSAttributedString *)stringByAppendingString:(NSAttributedString *)append toString:(NSAttributedString *)string {
  NSMutableAttributedString *result = [string mutableCopy];
  [result appendAttributedString:append];
  NSAttributedString *copy = [result copy];
  return copy;
}

//Instance method
- (NSAttributedString *)stringByAppendingString:(NSAttributedString *)append {
  NSMutableAttributedString *result = [self mutableCopy];
  [result appendAttributedString:append];
  NSAttributedString *copy = [result copy];
  return copy;
}

1voto

Igor Palaguta Points 1335

Vous pouvez essayer SwiftyFormat Il utilise la syntaxe suivante

let format = "#{{user}} mentioned you in a comment. #{{comment}}"
let message = NSAttributedString(format: format,
                                 attributes: commonAttributes,
                                 mapping: ["user": attributedName, "comment": attributedComment])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X