Tapas Pal Tapas Pal - 2 months ago 4
iOS Question

Swift-3 error: '-[_SwiftValue unsignedIntegerValue]: unrecognized selector

Following code was perfectly worked with old swift. This is an extension of 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
}


But in swift 3 it crashes saying


*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[_SwiftValue
unsignedIntegerValue]: unrecognized selector sent to instance
0x6080002565f0'


Anyone please suggest me what need to do?

Answer

I ran into the same problem,

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

here the String.Encoding.utf8 the type check fails. Use NSNumber(value: String.Encoding.utf8.rawValue)