2015-10-03 2 views
0

I found this extension on Stackoverflow. Однако произошла ошибка. Как исправить эту ошибку?Как декодировать объекты HTML в swift 2.0?

Cannot invoke initializer for type 'NSAttributedString' with an argument list of type '(data: NSData, options: [String : AnyObject], documentAttributes: NilLiteralConvertible, error: NilLiteralConvertible)' 

Ошибка в "let attribittedString".

extension String { 
    init(htmlEncodedString: String) { 
     let encodedData = htmlEncodedString.dataUsingEncoding(NSUTF8StringEncoding)! 
     let attributedOptions : [String: AnyObject] = [ 
      NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
      NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding 
     ] 
     let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)! //ERROR HERE! 
     self.init(attributedString.string) 
    } 
} 

ответ

8

Глядя на the docs Я считаю, что у вас есть правильный метод, но учтите, что Swift 2 имеет обработку ошибок, так что вам нужно будет сделать:

extension String { 
    init(htmlEncodedString: String) { 
     do { 
      let encodedData = htmlEncodedString.dataUsingEncoding(NSUTF8StringEncoding)! 
      let attributedOptions : [String: AnyObject] = [ 
       NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
       NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding 
      ] 
      let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) 
      self.init(attributedString.string) 
     } catch { 
      fatalError("Unhandled error: \(error)") 
     } 
    } 
} 

Я проверил, что в детской площадке и он радостно компилируется.

+0

Спасибо, что работает! –

Смежные вопросы