我不知道为什么会发生错误

时间:2016-09-26 06:13:20

标签: ios swift

我想使Post协议继承Equatable协议和Post协议实现Equatable协议中的方法。

我不知道为什么会发生错误......

请帮助我......我想知道为什么会发生错误..

(== swift 3.0中Equatable协议的方法是静态方法。因此,我使用静态方法。)

protocol Post: Equatable {
    var referenceIndex: Int { get set}
    var likeCount: Int { get set}
    var likeStatus: Bool { get set}
    var commentCount: Int { get set}
    var commentStatus: Bool { get set}
}

// here. error happen...
extension Post {
    public static func ==(lhs: Post, rhs: Post) -> Bool {
        return lhs.referenceIndex == rhs.referenceIndex
    }
}

1 个答案:

答案 0 :(得分:0)

试着查看this answer

您的==方法不应添加到extension中,应全局添加。即使它看起来似乎是static方法,它仍应声明为全局函数。您可以找到有关详细信息here的讨论。

现在......如果您已将Post声明为structclass,那么您可以在{{1}内添加static ==方法}}。但是,您已声明struct/classprotocol无法使用任何方法。

This answer向您展示如何protocol实施protocol

坚持我们可以实施Equatable并实施Post protocol这样的所有内容:

Equatable

然后,要证明事情正在发挥作用:

protocol Post: Equatable {
    var referenceIndex: Int { get set}
    var likeCount: Int { get set}
    var likeStatus: Bool { get set}
    var commentCount: Int { get set}
    var commentStatus: Bool { get set}
}

func ==<T : Post>(lhs: T, rhs: T) -> Bool {
    return lhs.referenceIndex == rhs.referenceIndex
}

希望能帮到你