2011-03-14 34 views
19

Başlığın söylediği gibi, initWithHTML:documentAttributes: ile HTML'yi NSAttributedString'a dönüştürebilirim, ancak burada yapmak istediğim şey terstir. Bunu başarmak için herhangi bir 3. parti kütüphanesi var mı?NSAttributedString HTML dizesine nasıl dönüştürebilirim?

@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

başlık soru tersi yapar iken, NSAttributeString HTML dönüştürmek nasıl sorar. – Eimantas

+0

Yayınladığınız kodla ilgili sorun nedir? İşe yaramalı. IOS8'de – omz

cevap

39

HTML (NSHTMLTextDocumentType) olarak ayarlanmış belge türü özellik (NSDocumentTypeDocumentAttribute) ile kullanın 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

(ve muhtemelen iOS7), ana iş parçacığı üzerinde çağrılmadığında bu kilitlenecektir !!!! –

+0

Metin, bağlantı içeriyorsa, bağlantı için bir href oluşturmayacaktır. – ingaham

+7

Sadece HTML'mdeki Bold, Italic, Underline & StrikeThrough etiketlerine ihtiyacım var, ancak bunu elde etmek için NSAttributedString'i HTML çıktılarına dönüştürmek çok css. Bunu basit tutmak için herhangi bir alternatif var mı? – ilight

İlgili konular