我有扩展名将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 } }
这个扩展很好.但是我需要将此扩展转换为类"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 } }
但我得到了这个错误:
错误:无法调用非函数类型的值
Martin R.. 5
在String
扩展方法中,
guard let data = data(using: .utf8)
是一个快捷方式
guard let data = self.data(using: .utf8)
即data(using:)
调用该方法self
.在你的类中,你想在给定的字符串参数(也恰好称为"数据")上调用它,因此它必须是
guard let data = data.data(using: .utf8)
重命名参数可以减少混乱!
在String
扩展方法中,
guard let data = data(using: .utf8)
是一个快捷方式
guard let data = self.data(using: .utf8)
即data(using:)
调用该方法self
.在你的类中,你想在给定的字符串参数(也恰好称为"数据")上调用它,因此它必须是
guard let data = data.data(using: .utf8)
重命名参数可以减少混乱!