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 336Ln),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)编程,那么您有另一种选择.您可以使用 如果您使用的是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的一部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |