以下代码与旧swift完美结合。这是字符串Swift-3错误:' - [_ SwiftValue unsignedIntegerValue]:无法识别的选择器
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
}
的扩展,但在迅疾3崩溃说
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 0x6080002565f0'
请人建议我有什么需要做什么?
由于它的正常工作。但它会是'NSNumber(value:String.Encoding.utf8.rawValue)' –
Lifesaver! (PS:还需要NSNumber(..)才能工作,你可以更新答案来包含它吗?) – Marchy
你应该只需要'String.Encoding.utf8.rawValue',因为Swift会自动转换'Int's当一个Swift字典传递给一个需要'NSDictionary'的函数时,将'UInt's转换成'NSNumber's。尽管这需要将swift字典作为一个'[String:Any]'数组。另请参见[this](https://developer.apple.com/swift/blog/?id=39)Swift博客条目。 – MaddTheSane