ios - 将扩展转换为类的函数

标签 ios swift swift3

我有将 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
    }
}

但是我得到了这个错误:

error: Cannot call value of non-function type

最佳答案

String扩展方法中,

guard let data = data(using: .utf8) 

的捷径
guard let data = self.data(using: .utf8) 

data(using:) 方法在 self 上被调用。在你的类(class) 你想在给定的字符串参数上调用它(这也会发生 被称为“数据”),因此它必须是

guard let data = data.data(using: .utf8)

重命名参数可以减少困惑!

关于ios - 将扩展转换为类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852438/

相关文章:

ios - 我应该更喜欢哪种图像加载方法?

ios - 运行 iOS SQLite 更新

ios - Xamarin.Forms iOS 中的 DateTimePicker

swift - 标准 Swift 数学函数中的运算次数

ios - 运行 SKAction x 次

ios - 不使用dispatch_once_t转换Swift 3代码

ios - 避免在 View 中再次获取图像

ios - 如何在总步骤中获取CMMotionActivity

ios - 我的 iOS 应用程序中没有收到 Firebase 推送通知

Swift - 替换字符串的第二个字符