Tap*_*Pal 53 xcode exception ios swift3
以下代码与旧swift完美配合.这是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
}
Run Code Online (Sandbox Code Playgroud)
但是在迅速的3中,它崩溃了
***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [_ SwiftValue unsignedIntegerValue]:无法识别的选择器发送到实例0x6080002565f0'
有人请建议我需要做什么?
Sac*_*Vas 91
我遇到了同样的问题:
let attributedOptions : [String: AnyObject] = [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8 as AnyObject
]
Run Code Online (Sandbox Code Playgroud)
这里的String.Encoding.utf8
类型检查失败.使用NSNumber(value: String.Encoding.utf8.rawValue)
小智 47
在Swift3中,不再需要强制转换为AnyObject,也不需要NSNumber.
let attrs: [String: Any] = [
NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue
]
Run Code Online (Sandbox Code Playgroud)
小智 8
这篇文章救了我的一天.迁移到斯威夫特3,变化不大后 String.Encoding.utf8
,以String.Encoding.utf8.rawValue
固定这里报道的陷阱.
原始线:
...
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8],
...
Run Code Online (Sandbox Code Playgroud)
变成
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue],
Run Code Online (Sandbox Code Playgroud)
添加.rawValue
到最后......
归档时间: |
|
查看次数: |
9896 次 |
最近记录: |