NSAttributedString
iOS14 での画像を含むをアーカイブNSTextAttachment
しましたが、iOS13 でのアーカイブ解除に失敗することに気付きました。iOS14では解凍に成功しています。
ログに記録されたエラーは次のとおりです。
Error decoding string object. error=Error Domain=NSCocoaErrorDomain Code=4864
"value for key 'NS.objects' was of unexpected class 'NSTextAttachment'. Allowed classes are '{(
NSGlyphInfo,
UIColor,
NSURL,
UIFont,
NSParagraphStyle,
NSString,
NSAttributedString,
NSArray,
NSNumber,
NSDictionary
)}'." UserInfo={NSDebugDescription=value for key 'NS.objects' was of unexpected class 'NSTextAttachment'. Allowed classes are '{(
NSGlyphInfo,
UIColor,
NSURL,
UIFont,
NSParagraphStyle,
NSString,
NSAttributedString,
NSArray,
NSNumber,
NSDictionary
)}'.}
それを機能させるオプションはありますか、それとも私はここで運命づけられていますか?
これは、イメージが using に挿入されるNSMutableAttributedString
方法NSTextAttachment
です。
// Add an image:
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = image;
NSMutableAttributedString *strWithImage = [[NSAttributedString attributedStringWithAttachment:textAttachment] mutableCopy];
[s appendAttributedString:strWithImage];
これはアーカイブ行です:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str requiringSecureCoding:YES error:&error];
これは、NSError
インスタンスを返すアーカイブ解除行です。
NSError *error = nil;
NSAttributedString *str = [NSKeyedUnarchiver unarchivedObjectOfClass:NSAttributedString.class fromData:data error:&error];
iOS14でインスタンスを作成NSData
し、ファイルに保存してiOS13で読み込みます。これは失敗したときです。