UITextViewをattributedTextで部分的に色付けが可能なメモ帳を作成しているのですが、
attributedTextで加えた変更をUserDefaultに保存したいのですが、ご教授いただけると助かります

-(void)redChengeButton:(id) sender{
    NSLog(@"ボタンが押されました");
    NSRange selectedRange = self->tv.selectedRange;
    // 1文字以上を選択していたら
    if (selectedRange.length > 0) {
        NSLog(@"called if文");
        // attributedStringを取得して、Mutableにコピー。
        NSMutableAttributedString *theText = [tv.attributedText mutableCopy];
        // 選択部分だけ文字色を赤に変える。
        [theText addAttribute:NSForegroundColorAttributeName value: UIColor.redColor range:selectedRange ];

        NSLog(@"my range is %@", NSStringFromRange(selectedRange));
        // 変更を加えたattributedStringを戻す。
        tv.attributedText = theText;

        UIFont *font = self->tv.font; // フォントを取得
        self->tv.typingAttributes = @{NSForegroundColorAttributeName: UIColor.blackColor,
                                      NSFontAttributeName: font};
    }

}

 
  

//これで保存しようとするとエラー
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setValue:tv.attributedText forKey:@"tv"];

//これだと色の変更が保存されない
 NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setValue:tv.text forKey:@"tv"];