微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

objective-c – 将NSAttributedString转换为字符串并返回

我有Nsstring,我需要制作NSAttributedString.

Nsstring是这样的:

bvcx b vcxbcvx bcxvbcxv bvx xbc bcvx bxcv bcxv bcxv bcxv bcvx bcvx bcxvbcvx bvc bcvx bxcv{
NSFont = "\"LucidaGrande 24.00 pt. P [] (0x108768a80) fobj=0x108788880,spc=7.59\"";
NSParagraphStyle = "Alignment 4,Linespacing 0,ParagraphSpacing 0,ParagraphSpacingBefore 0,Headindent 0,TailIndent 0,FirstLineHeadindent 0,LineHeight 0/0,LineHeightMultiple 0,LineBreakMode 0,Tabs (\n    28L,\n    56L,\n    84L,\n    112L,\n    140L,\n    168L,\n    196L,\n    224L,\n    252L,\n    280L,\n    308L,\n    336L\n),DefaultTabInterval 0,Blocks (null),Lists (null),BaseWritingDirection -1,HyphenationFactor 0,TighteningFactor 0.05,HeaderLevel 0";
}

它是UTF-8中的NSAttributedString.有什么方法可以做到吗?

解决方法

你说你从现有的NSAttributedString创建输入字符串,如下所示:
[Nsstring stringWithFormat:@"%@",nsattributedstring]

%@格式说明符将描述消息发送到nsattributedstring对象.描述方法的目的不是生成一个可以轻松转换回NSAttributedString对象的字符串.它旨在帮助程序员调试他们的代码.

将对象转换为字符串或字节数组以便以后可以将其转换回对象的过程称为序列化.使用%@或描述方法通常不是执行序列化的好方法.如果您确实要反序列化描述方法创建的字符串,则必须编写自己的解析器.据我所知,没有API.

相反,Cocoa提供了一个用于序列化和反序列化对象的系统.可以使用此系统序列化的对象符合NSCoding协议. NSAttributedString对象符合NSCoding.因此,请尝试以这种方式序列化原始属性字符串:

NSMutableData *data = [NSKeyedArchiver archivedDataWithRootObject:nsattributedstring];

在您需要的地方保存数据(非人类可读的二进制文件,而不是UTF-8).当您需要重新创建属性字符串时,请执行以下操作:

NSAttributedString *fancyText = [NSKeyedUnarchiver unarchiveObjectWithData:data];

如果您正在为OS X(而不是iOS)编程,那么您有另一种选择.您可以使用RTFFromRange:documentAttributes: method(省略附件)或RTFDFromRange:documentAttributes: method(包括附件)将属性字符串转换为RTF(富文本格式),这是人类可读的.然后,您可以使用initWithRTF将RTF数据转换回属性字符串:documentAttributes:或initWithRTFD:documentAttributes:.这些方法在iOS上不可用.

如果您使用的是iOS 7.0或更高版本的编程,则可以使用-dataFromrange:documentAttributes:error:或fileWrapperFromrange:documentAttributes:error:将属性字符串转换为RTF / RTFD.您需要在文档属性中将NSDocumentTypeDocumentAttribute设置为NSRTFTextDocumentType或NSRTFDTextDocumentType.使用initWithData:options:documentAttributes:error:或initWithFileURL:options:documentAttributes:error:转换回NSAttributedString.这些方法NSAttributedString UIKit Additions的一部分.

原文地址:https://www.jb51.cc/c/110489.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐