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

时间:2017-08-23 16:28:42

标签: swift swift-protocols

当尝试符合NSItemProviderReading时,我收到以下错误: enter image description here

此方法的协议定义如下:

public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self

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

如何回归" Self" ?

更新: 当我要求Xcode修复它时会发生这种情况: enter image description here

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

1 个答案:

答案 0 :(得分:5)

协议中的

Self要求协议的 一致性使用自己的类型 。因此,当您在类扩展中对此进行符合时,您需要在方法的返回类型中将Self更改为NameData

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

还有一件事,你需要制作你的NameData类final