iOS — скопировать все атрибуты NSMutableAttributedString в другой NSMutableAttributedString

Я хотел бы скопировать все атрибуты из одного NSMutableAttributedString в новый. Код, который я пробовал, таков:

[attrStr enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attrStr.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
        if (value) {
           // UIFont *oldFont = (UIFont *)value;
            UIFont *newFont = [_label.attributedText
            [attrStr removeAttribute:NSFontAttributeName range:range];
            [attrStr addAttribute:NSFontAttributeName value:newFont range:range];
            //found = YES;
        }
    }];

код явно неполный, и похоже, что он пытается сделать это только для шрифтов. Я хотел бы перебрать каждый атрибут и добавить его в новую переменную NSMutableAttributedString. Обновление: мой вопрос: как применить все атрибуты одного NSMutableAttributedString к другому NSMutableAttributedString? Можем ли мы использовать этот метод somehow:attribute:atIndex:effectiveRange


person j2emanue    schedule 15.05.2015    source источник
comment
Какой у Вас вопрос?   -  person Dima    schedule 15.05.2015
comment
мой вопрос: как применить все атрибуты одного NSMutableAttributedString к другому NSMutableAttributedString?   -  person j2emanue    schedule 15.05.2015
comment
Смотрите мой ответ для правильного способа сделать это.   -  person Dima    schedule 15.05.2015


Ответы (1)


NSMutableAttributedStringNSAttributedString) соответствует NSCopying. Итак, вы должны просто быть в состоянии сделать это:

NSMutableAttributedString *mutableCopy = attrStr.mutableCopy;
NSAttributedString *immutableCopy = attrStr.copy;
person Dima    schedule 15.05.2015
comment
я хотел бы скопировать атрибуты, а не весь объект. В любом случае, я могу получить все атрибуты в словаре, а затем скопировать их во все в новую атрибутивную строку? - person j2emanue; 15.05.2015