我有扩展名将html符号转换为字符串:
extension String {
func convertHtmlSymbols() throws -> String? {
guard let data = data(using: .utf8) else { return nil }
return try NSAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil).string
}
}
Run Code Online (Sandbox Code Playgroud)
这个扩展很好.但是我需要将此扩展转换为类"Converter"中的函数:
class Converter{
func convertHtmlSymbols(data: String) throws -> String? {
guard let data = data(using: .utf8) else { return nil }
return try NSAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil).string
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误:
错误:无法调用非函数类型的值
在String
扩展方法中,
guard let data = data(using: .utf8)
Run Code Online (Sandbox Code Playgroud)
是一个快捷方式
guard let data = self.data(using: .utf8)
Run Code Online (Sandbox Code Playgroud)
即data(using:)
调用该方法self
.在你的类中,你想在给定的字符串参数(也恰好称为"数据")上调用它,因此它必须是
guard let data = data.data(using: .utf8)
Run Code Online (Sandbox Code Playgroud)
重命名参数可以减少混乱!
归档时间: |
|
查看次数: |
94 次 |
最近记录: |