gpt4 book ai didi

Swift 协议(protocol)定义返回 self 的类方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:52 27 4
gpt4 key购买 nike

我的代码在 XCode 6 beta 中工作,但最近在更新到 xcode 6.1 后停止工作。

这是我的协议(protocol):

protocol CanDeserialiseFromJson {
class func FromJson(json : JSONValue) -> Self
}

这是实现:

extension Invoice : CanDeserialiseFromJson {
class func FromJson(json : JSONValue) -> Self {
return Invoice()
}
}

这没有给出错误:

'Invoice' is not convertable to 'Self'

正如我所说,这曾经有效,但我不明白为什么它不再有效了

最佳答案

没错。您的方法被声明为返回 Self,而您返回的是 Invoice。类方法是继承的,在子类中,Self 将是该子类类型,Invoice 不是该类型的子类型。

要实际返回 Self,假设 Invoice 有一个 required init() 构造函数,您可以这样做:

extension Invoice : CanDeserialiseFromJson {
class func FromJson(json : JSONValue) -> Self {
return self()
}
}

关于Swift 协议(protocol)定义返回 self 的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com