54 votes

Erreur Swift-3: '- [_ SwiftValue unsignedIntegerValue]: sélecteur non reconnu

Le code suivant était parfaitement travaillé avec le vieux swift. Ceci est une extension de String

 func stringByConvertingHTML() -> String {
    let newString = replacingOccurrences(of: "\n", with: "<br>")
    if let encodedData = newString.data(using: String.Encoding.utf8) {
        let attributedOptions : [String: AnyObject] = [
            NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject,
            NSCharacterEncodingDocumentAttribute: String.Encoding.utf8 as AnyObject
        ]
        do {
            let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) //Crash here
            return attributedString.string
        } catch {
            return self
        }
    }
    return self
}
 

Mais dans le 3 rapide, il se bloque en disant

*** Arrêt de l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '- [_ SwiftValue unsignedIntegerValue]: sélecteur non reconnu envoyé à l'instance 0x6080002565f0'

Quelqu'un veut-il me dire ce qu'il faut faire?

94voto

Sachin Vas Points 1369

J'ai rencontré le même problème:

 let attributedOptions : [String: AnyObject] = [
            NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject,
            NSCharacterEncodingDocumentAttribute: String.Encoding.utf8 as AnyObject
        ]
 

Ici, le String.Encoding.utf8 la vérification de type échoue. Utilisez NSNumber(value: String.Encoding.utf8.rawValue)

48voto

zidanex Points 491

Dans Swift3, aucun transtypage sur AnyObject n’est plus nécessaire et aucun NSNumber.

 let attrs: [String: Any] = [
            NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType,
            NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue
        ]
 

8voto

Cet article a sauvé ma journée. Après avoir migré vers Swift 3, le petit changement String.Encoding.utf8 à String.Encoding.utf8.rawValue corrigé le piège signalé ici.

Ligne d'origine:

 ...
    options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
              NSCharacterEncodingDocumentAttribute: String.Encoding.utf8],
...
 

changé en

 options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
          NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue],
 

ajoutez les .rawValue à la fin ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X