I have an attributed string. I want to preserve the attributes within the string but set all the actual characters to uppercase, lowercase, etc.

According to the docs for NSMutableAttributedString, the - mutableString method returns a mutable string that the receiver tracks changes to in order to preserve attribute runs. However, when I call - setString: or -replaceCharactersInRange:withString: on this, all my attributes are removed.

How can I do this without my attributes going AWOL?




NSMutableAttributedString* ttd = [[[self textSubstitutor] substitutedStringWithObject:object] mutableCopy];
        
        // capitalize all the text according to the capitalization setting:
        
        NSMutableString* mStr = [ttd mutableString];

        // Docs: "Discussion
// The receiver tracks changes to this string and keeps its attribute mappings up to date."
        
        NSRange         range = NSMakeRange( 0, [mStr length]);
        
        switch([self capitalization])
        {
                default:
                        break;
                        
                case kDKTextCapitalizationUppercase:
[mStr replaceCharactersInRange:range withString:[mStr uppercaseString]]; // setString: doesn't work either
                        break;
                        
                case kDKTextCapitalizationLowercase:
[mStr replaceCharactersInRange:range withString:[mStr lowercaseString]];
                        break;
                        
                case kDKTextCapitalizationCapitalize:
[mStr replaceCharactersInRange:range withString:[mStr capitalizedString]];
                        break;
        }

tia,


--Graham
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to