Looping Through NSATtributedString Atributos para Aumentar Font SIze

Todo lo que necesito es recorrer todos los atributos de NSAttributedString e incrementar su tamaño de fuente. Hasta el momento llegué al punto en el que realicé un ciclo y NSAttributedString atributos, pero no puedo volver a NSAttributedString en NSAttributedString . La línea que comenté no funciona para mí. Cómo guardar de nuevo?

 NSAttributedString *attrString = self.richTextEditor.attributedText; [attrString enumerateAttributesInRange: NSMakeRange(0, attrString.string.length) options:NSAttributedStringEnumerationReverse usingBlock: ^(NSDictionary *attributes, NSRange range, BOOL *stop) { NSMutableDictionary *mutableAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes]; UIFont *font = [mutableAttributes objectForKey:NSFontAttributeName]; UIFont *newFont = [UIFont fontWithName:font.fontName size:font.pointSize*2]; [mutableAttributes setObject:newFont forKey:NSFontAttributeName]; //Error: [self.richTextEditor.attributedText setAttributes:mutableAttributes range:range]; //no interfacce for setAttributes:range: }]; 

Algo como esto debería funcionar:

 NSMutableAttributedString *res = [self.richTextEditor.attributedText mutableCopy]; [res beginEditing]; __block BOOL found = NO; [res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { if (value) { UIFont *oldFont = (UIFont *)value; UIFont *newFont = [oldFont fontWithSize:oldFont.pointSize * 2]; [res removeAttribute:NSFontAttributeName range:range]; [res addAttribute:NSFontAttributeName value:newFont range:range]; found = YES; } }]; if (!found) { // No font was found - do something else? } [res endEditing]; self.richTextEditor.attributedText = res; 

En este punto, res tiene una nueva cadena atribuida con todas las fonts duplicando su tamaño original.

Cree un NSMutableAttributedString partir de su cadena atribuida original antes de comenzar. En cada iteración del ciclo, llame a addAttribute:value:range: en la cadena atribuible mutable (esto reemplazará los antiguos atributos en ese rango).