Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSAttribute字符串中的HTML_Html_Objective C_Ios_Nsattributedstring - Fatal编程技术网

NSAttribute字符串中的HTML

NSAttribute字符串中的HTML,html,objective-c,ios,nsattributedstring,Html,Objective C,Ios,Nsattributedstring,我需要将HTML转换回HTML,而不是将其转换为属性字符串。这可以在Mac上轻松完成,如下所示: 不幸的是,方法dataFromRange:documentAttributes:仅通过nsattributestringAppKit附件在Mac上可用 我的问题是,如何在iOS上执行此操作?这不是一种“简单”的方法,但如何使用以下命令迭代字符串的属性: - (void)enumerateAttributesInRange:(NSRange)enumerationRange

我需要将HTML转换回HTML,而不是将其转换为属性字符串。这可以在Mac上轻松完成,如下所示:

不幸的是,方法
dataFromRange:documentAttributes:
仅通过
nsattributestring
AppKit附件在Mac上可用


我的问题是,如何在iOS上执行此操作?

这不是一种“简单”的方法,但如何使用以下命令迭代字符串的属性:

- (void)enumerateAttributesInRange:(NSRange)enumerationRange 
                           options:(NSAttributedStringEnumerationOptions)opts 
                        usingBlock:(void (^)(NSDictionary *attrs, NSRange range, BOOL *stop))block
有一个
NSMutableString
变量来累积HTML(我们称之为“HTML”)。在块中,您将使用字符串手动构造HTML。例如,如果文本属性“attrs”指定红色粗体文本:


[html appendFormat:@“%@,[originalStr substringWithRange:range]]


编辑:昨天偶然发现:

NSAttributedString+HTMLFromRange类别来自“UliKit” ()


看起来它可以做你想做的事。

使用下面的代码。它工作得很好

NSAttributedString *s = ...;
NSDictionary *documentAttributes = @{NSDocumentTypeDocumentAttribute:    NSHTMLTextDocumentType};    
NSData *htmlData = [s dataFromRange:NSMakeRange(0, s.length)    documentAttributes:documentAttributes error:NULL];
NSString *htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];

是的,我在考虑。最困难的部分是处理字体,看看它们是粗体、斜体还是无字体。我现在可以试一试,看看效果如何。谢谢很好,刚刚注意到新的链接(所以当答案被编辑时似乎不会通知),它做了我想要的一切。非常感谢!(+1 & ✔)@Joshua这是如何解决你的问题的?似乎NSAttributedString+HTMLFromRange充满了OS X-only的东西,不是吗?@MatthewFrederick我从来没有用它实现过任何东西,但我记得最后看到的是Cocoanatics DTCoreText。它只是为了从HTML获取NSAttributedString,现在支持以相反的方式实现,即从NSAttributedString获取HTML。您可以在Github上找到
DTCoreText
:对于任何需要Joshua所说内容的人,它的.its在DTCoreText中,出于某种原因,我找不到它,但现在我找到了:)这是可行的,但它创建了HTML 4格式,而不是HTML 5。