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 ?
Réponses
Trop de publicités?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.
// 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;
}
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])
- Réponses précédentes
- Plus de réponses