符合返回"Self"的静态函数

the*_*end 2 swift swift-protocols

当尝试符合NSItemProviderReading时,我收到以下错误: 在此输入图像描述

该方法的协议定义如下:

public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self
Run Code Online (Sandbox Code Playgroud)

协议静态函数返回类型"Self",我试图将其更改为实际类的名称,但之后它将不再符合NSItemProviderReading.

如何归还"自我"?

更新:当我要求Xcode修复它时会发生这种情况: 在此输入图像描述

它附加为!自我,但后来显示2个错误和这个警告,它看起来很混乱,因为它似乎想要恢复到以前的状态,在这种情况下返回类的实例NameData

nay*_*yem 5

Self在协议中要求协议的一致性使用它们自己的类型.所以,你需要改变Self,以NameData当你符合这在你的类扩展的方法的返回类型.

extension NameData: NSItemProviderReading {
    static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> NameData {
        return NameData(name: "Test")
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一件事,你需要创建NameData类final.

  • 多数民众赞成,最后一句! (3认同)