NSAttributedString extension swift 3
Je suis la migration de mon code swift 3 et je vais avoir un moment difficile avec cette extension, qui travaillait sur la précédente swift version.
extension Data {
var attributedString: NSAttributedString? {
do {
return try NSAttributedString(data: self, options:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8], documentAttributes: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
return nil
}
}
Maintenant quand j'essaie de les appeler ce morceau de code, j'obtiens une erreur d'exception comme cette
error: warning: couldn't get required object pointer (substituting NULL): Couldn't load 'self' because its value couldn't be evaluated
C'est comme ça que j'appelle la méthode de mon point de vue contrôleur
let htmlCode = "<html><head><style type=\"text/css\">@font-face {font-family: Avenir-Roman}body {font-family: Avenir-Roman;font-size:15;margin: 0;padding: 0}</style></head><body bgcolor=\"#FBFBFB\">" + htmlBodyCode + "</body>"
newsDescription.attributedText = htmlCode.utf8Data?.attributedString
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Comme décrit dans la référence officielle, la valeur de la clé de
NSCharacterEncodingDocumentAttribute
doit être unNSNumber
.Dans les anciennes Martinets,
NSStringEncoding
constantes sont importés en tant queUInt
s, de sorte qu'ils sont automatiquement relié àNSNumber
lors de la conversion àAnyObject
, contenue dans leNSDictionary
.Mais maintenant, Swift a introduit un nouveau type enum
String.Encoding
qui n'est pas à l'origine un Objectif-C enum. Et malheureusement, maintenant, n'importe quel Swift types peuvent être contenus dans unNSDictionary
intermédiaire caché de référence type_SwiftValue
, qui n'est certainement PAS unNSNumber
.Donc, vous avez besoin de passer quelque chose qui peut être comblé à
NSNumber
comme valeur de la clé deNSCharacterEncodingDocumentAttribute
. Dans votre cas,rawValue
serait de travailler.À mon avis, cela devrait être amélioré et mieux envoyer un rapport de bug pour Apple ou swift.org.
Au cas où quelqu'un a besoin d'aide dans Swift 4+ :