【问题标题】:Conforming to a static function that returns "Self"符合返回“Self”的静态函数
【发布时间】:2017-08-24 01:59:03
【问题描述】:

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

该方法的协议定义如下:

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

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

一个人如何返回“自我”?

更新: 这就是我要求 Xcode 修复它时发生的情况:

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

【问题讨论】:

标签: swift swift-protocols


【解决方案1】:

Self 在一个协议中是一个要求,协议的一致性使用他们自己的类型。因此,当您在类扩展中遵循此方法时,需要将方法的返回类型中的Self 更改为NameData

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

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

【讨论】:

  • 就是这样,最后的条款!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 2015-08-17
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2017-08-14
相关资源
最近更新 更多