Следующий код был отлично обработан старым быстрым. Это является продолжением строкиОшибка 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 (значение: String.Encoding.utf8.rawValue)' –
Lifesaver! (PS: Также нужен NSNumber (..) для работы, не могли бы вы PLZ обновить ответ, чтобы включить это вместо?) – Marchy
Вам просто нужно 'String.Encoding.utf8.rawValue', так как Swift автоматически преобразует' Int ' и 'UInt' в 'NSNumber', когда словарь Swift передается функции, ожидающей' NSDictionary'. Хотя для этого потребуется быстрый словарь, являющийся массивом '[String: Any]. См. Также [this] (https://developer.apple.com/swift/blog/?id=39) Быстрая запись в блоге. – MaddTheSane