2011-03-14 28 views
19

जैसा कि शीर्षक बताता है, अब मैं NSAttributedString में initWithHTML:documentAttributes: के साथ HTML को कन्वर्ट कर सकता हूं, लेकिन मैं यहां क्या करना चाहता हूं वह विपरीत है। क्या यह प्राप्त करने के लिए कोई तीसरी पार्टी लाइब्रेरी है?मैं एनएसएट्रिब्यूटेड स्ट्रिंग को HTML स्ट्रिंग में कैसे परिवर्तित करूं?

@implementation NSAttributedString(HTML) 
-(NSString *)htmlForAttributedString{ 
    NSArray * exclude = [NSArray arrayWithObjects:@"doctype", 
         @"html", 
         @"head", 
         @"body", 
         @"xml", 
         nil 
         ]; 
    NSDictionary * htmlAtt = [NSDictionary 
           dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType, 
           NSDocumentTypeDocumentAttribute, 
           exclude, 
           NSExcludedElementsDocumentAttribute, 
           nil 
           ]; 
    NSError * error; 
    NSData * htmlData = [self dataFromRange:NSMakeRange(0, [self length]) 
           documentAttributes:htmlAtt error:&error 
         ]; 
     //NSAttributedString * htmlString = [[NSAttributedString alloc]initWithHTML:htmlData documentAttributes:&htmlAtt]; 
    NSString * htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
    return htmlString; 
} 
@end 
+1

शीर्षक पूछता कैसे NSAttributeString में HTML कन्वर्ट करने के लिए है, जबकि प्रश्न उपाध्यक्ष प्रतिकूल है। – Eimantas

+0

आपके द्वारा पोस्ट किए गए कोड के साथ वास्तव में समस्या क्या है? यह काम करना चाहिए। आईओएस 8 में – omz

उत्तर

39

दस्तावेज़ प्रकार विशेषता (NSDocumentTypeDocumentAttribute) एचटीएमएल (NSHTMLTextDocumentType) के लिए सेट के साथ उपयोग dataFromRange:documentAttributes::

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]; 
+0

(और संभवतः आईओएस 7) अगर यह मुख्य धागे पर नहीं बुलाया जाता है तो यह दुर्घटनाग्रस्त हो जाएगा !!!! –

+0

यदि पाठ में लिंक है, तो यह लिंक के लिए एक href नहीं बनाएगा। – ingaham

+7

मुझे बस अपने एचटीएमएल में टैग के माध्यम से बोल्ड, इटालिक, अंडरलाइन और स्ट्राइक की आवश्यकता है, लेकिन एनएसएट्रिब्यूटेड स्ट्रिंग को एचटीएमएल में परिवर्तित करने के लिए इसे प्राप्त करने के लिए बहुत सारे सीएसएस आउटपुट हैं। यह आसान रखने के लिए कोई विकल्प? – ilight

संबंधित मुद्दे