符合返回“Self”的静态函数

3
当尝试遵循NSItemProviderReading时,我遇到了以下错误:enter image description here 该方法的协议定义如下:
public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self

该协议静态函数返回类型“Self”,我尝试将其更改为实际类的名称,但这样它就不再符合NSItemProviderReading的要求。

如何才能返回“Self”?

更新: 这是当我让Xcode修复它时发生的情况: enter image description here

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


可能是[Protocol func returning Self]的重复问题。 - nayem
1
尝试将NameData设置为最终类。 - user3581248
1个回答

8

Self在协议中是要求协议的符合者使用自己的类型。因此,当您在类扩展中符合此协议时,需要将返回类型中的Self更改为NameData

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

还有一件事,您需要将NameData类声明为final


5
就是这样,最后一个条款! - the Reverend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接