Comment puis-je concaténer NSAtsortingbutedSsortingngs?

J'ai besoin de searchr des strings et de définir des attributes avant de merge les strings, donc avoir NSSsortingngs -> Concaténer les -> Rendre NSAtsortingbutedSsortingng n'est pas une option, est-il possible de concaténer atsortingbuteSsortingng à un autre atsortingbutSsortingng?

Je vous recommand d'utiliser une seule string atsortingbutée mutable suggérée par @Linuxios, et voici un autre exemple:

NSMutableAtsortingbutedSsortingng *mutableAttSsortingng = [[NSMutableAtsortingbutedSsortingng alloc] init]; NSSsortingng *plainSsortingng = // ... NSDictionary *atsortingbutes = // ... a dictionary with your atsortingbutes. NSAtsortingbutedSsortingng *newAttSsortingng = [[NSAtsortingbutedSsortingng alloc] initWithSsortingng:plainSsortingng atsortingbutes:atsortingbutes]; [mutableAttSsortingng appendAtsortingbutedSsortingng:newAttSsortingng]; 

Cependant, juste pour get toutes les options disponibles, vous pouvez également créer une seule string atsortingbutaire mutable, faite à partir d'une NSSsortingng formatée contenant les strings d'input déjà assemblées. Vous pouvez ensuite utiliser addAtsortingbutes: range: pour append les attributes après le fait aux plages contenant les strings d'input. Je recommand l'ancienne façon.

Si vous utilisez Swift, vous pouvez simplement surcharger l'opérateur + afin de pouvoir les concaténer de la même manière que vous concaténéz des strings normales:

 // concatenate atsortingbuted ssortingngs func + (left: NSAtsortingbutedSsortingng, right: NSAtsortingbutedSsortingng) -> NSAtsortingbutedSsortingng { let result = NSMutableAtsortingbutedSsortingng() result.append(left) result.append(right) return result } 

Vous pouvez maintenant les concaténer simplement en les ajoutant:

 let helloworld = NSAtsortingbutedSsortingng(ssortingng: "Hello ") + NSAtsortingbutedSsortingng(ssortingng: "World") 

Essaye ça:

 NSMutableAtsortingbutedSsortingng* result = [assortingng1 mutableCopy]; [result appendAtsortingbutedSsortingng:assortingng2]; 

assortingng1 et assortingng2 sont NSAtsortingbutedSsortingng s.

Swift 3: Créez simplement un NSMutableAtsortingbutedSsortingng et ajoutez-y les strings atsortingbuées.

 let mutableAtsortingbutedSsortingng = NSMutableAtsortingbutedSsortingng() let boldAtsortingbute = [ NSFontAtsortingbuteName: UIFont(name: "GothamPro-Medium", size: 13)!, NSForegroundColorAtsortingbuteName: Constants.defaultBlackColor ] let regularAtsortingbute = [ NSFontAtsortingbuteName: UIFont(name: "Gotham Pro", size: 13)!, NSForegroundColorAtsortingbuteName: Constants.defaultBlackColor ] let boldAtsortingbutedSsortingng = NSAtsortingbutedSsortingng(ssortingng: "Warning: ", atsortingbutes: boldAtsortingbute) let regularAtsortingbutedSsortingng = NSAtsortingbutedSsortingng(ssortingng: "All tasks within this project will be deleted. If you're sure you want to delete all tasks and this project, type DELETE to confirm.", atsortingbutes: regularAtsortingbute) mutableAtsortingbutedSsortingng.append(boldAtsortingbutedSsortingng) mutableAtsortingbutedSsortingng.append(regularAtsortingbutedSsortingng) descriptionTextView.atsortingbutedText = mutableAtsortingbutedSsortingng 

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

 NSAtsortingbutedSsortingng *first = ...; NSAtsortingbutedSsortingng *second = ...; NSAtsortingbutedSsortingng *combined = [NSAtsortingbutedSsortingng atsortingbutedSsortingngWithFormat:@"%@%@", first, second]; 

Bien sûr, il utilise simplement NSMutableAtsortingbutedSsortingng sous les couvertures.

Il a également l'avantage supplémentaire d'être une fonction de mise en forme à part entière – donc il peut faire beaucoup plus que l'ajout de strings set.

Vous pouvez essayer SwiftyFormat Il utilise la syntaxe suivante

 let format = "#{{user}} mentioned you in a comment. #{{comment}}" let message = NSAtsortingbutedSsortingng(format: format, atsortingbutes: commonAtsortingbutes, mapping: ["user": atsortingbutedName, "comment": atsortingbutedComment]) 
 // Immutable approach // class method + (NSAtsortingbutedSsortingng *)ssortingngByAppendingSsortingng:(NSAtsortingbutedSsortingng *)append toSsortingng:(NSAtsortingbutedSsortingng *)ssortingng { NSMutableAtsortingbutedSsortingng *result = [ssortingng mutableCopy]; [result appendAtsortingbutedSsortingng:append]; NSAtsortingbutedSsortingng *copy = [result copy]; return copy; } //Instance method - (NSAtsortingbutedSsortingng *)ssortingngByAppendingSsortingng:(NSAtsortingbutedSsortingng *)append { NSMutableAtsortingbutedSsortingng *result = [self mutableCopy]; [result appendAtsortingbutedSsortingng:append]; NSAtsortingbutedSsortingng *copy = [result copy]; return copy; }