@@ -306,7 +306,9 @@ extension NSAttributedString {
306
306
307
307
open class NSMutableAttributedString : NSAttributedString {
308
308
309
- open func replaceCharacters( in range: NSRange , with str: String ) { NSUnimplemented ( ) }
309
+ open func replaceCharacters( in range: NSRange , with str: String ) {
310
+ CFAttributedStringReplaceString ( _cfMutableObject, CFRange ( range) , str. _cfObject)
311
+ }
310
312
311
313
open func setAttributes( _ attrs: [ NSAttributedStringKey : Any ] ? , range: NSRange ) {
312
314
guard let attrs = attrs else {
@@ -332,14 +334,35 @@ open class NSMutableAttributedString : NSAttributedString {
332
334
CFAttributedStringRemoveAttribute ( _cfMutableObject, CFRange ( range) , name. rawValue. _cfObject)
333
335
}
334
336
335
- open func replaceCharacters( in range: NSRange , with attrString: NSAttributedString ) { NSUnimplemented ( ) }
336
- open func insert( _ attrString: NSAttributedString , at loc: Int ) { NSUnimplemented ( ) }
337
- open func append( _ attrString: NSAttributedString ) { NSUnimplemented ( ) }
338
- open func deleteCharacters( in range: NSRange ) { NSUnimplemented ( ) }
339
- open func setAttributedString( _ attrString: NSAttributedString ) { NSUnimplemented ( ) }
337
+ open func replaceCharacters( in range: NSRange , with attrString: NSAttributedString ) {
338
+ CFAttributedStringReplaceAttributedString ( _cfMutableObject, CFRange ( range) , attrString. _cfObject)
339
+ }
340
+
341
+ open func insert( _ attrString: NSAttributedString , at loc: Int ) {
342
+ NSUnimplemented ( )
343
+ }
344
+
345
+ open func append( _ attrString: NSAttributedString ) {
346
+ NSUnimplemented ( )
347
+ }
348
+
349
+ open func deleteCharacters( in range: NSRange ) {
350
+ // To delete a range of the attributed string, call CFAttributedStringReplaceString() with empty string and specified range
351
+ let emptyString = " " . _cfObject
352
+ CFAttributedStringReplaceString ( _cfMutableObject, CFRange ( range) , emptyString)
353
+ }
354
+
355
+ open func setAttributedString( _ attrString: NSAttributedString ) {
356
+ NSUnimplemented ( )
357
+ }
358
+
359
+ open func beginEditing( ) {
360
+ CFAttributedStringBeginEditing ( _cfMutableObject)
361
+ }
340
362
341
- open func beginEditing( ) { NSUnimplemented ( ) }
342
- open func endEditing( ) { NSUnimplemented ( ) }
363
+ open func endEditing( ) {
364
+ CFAttributedStringEndEditing ( _cfMutableObject)
365
+ }
343
366
344
367
public override init ( string str: String ) {
345
368
super. init ( string: str)
0 commit comments