当前位置:  开发笔记 > 前端 > 正文

将扩展转换为类的功能

如何解决《将扩展转换为类的功能》经验,为你挑选了1个好方法。

我有扩展名将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)

重命名参数可以减少混乱!



1> Martin R..:

String扩展方法中,

guard let data = data(using: .utf8) 

是一个快捷方式

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

data(using:)调用该方法self.在你的类中,你想在给定的字符串参数(也恰好称为"数据")上调用它,因此它必须是

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

重命名参数可以减少混乱!

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有