Swift 结构将不符合equatable,即使使用==set

Swift 结构将不符合equatable,即使使用==set,swift,Swift,我用一个switch语句来遍历一系列菜单项。我在每个案例中都得到了警告: 运算符函数“~=”要求“MenuItem”符合“equalable” 我想我知道这个错误的意思,但这是MenuItem的代码: struct MenuItem { let image: UIImage let title: String let body: String let storyboardName: String let storyboardID: String l

我用一个switch语句来遍历一系列菜单项。我在每个案例中都得到了警告:

运算符函数“~=”要求“MenuItem”符合“equalable”

我想我知道这个错误的意思,但这是MenuItem的代码:

struct MenuItem {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String
    let landingItems: [LandingItem]

    static func == (lhs: MenuItem, rhs: MenuItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}


struct LandingItem {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String

    static func == (lhs: LandingItem, rhs: LandingItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}

有没有办法让MenuItem呃。。。超级均衡?还是我遗漏了一些非常明显的东西?

斯威夫特的打字安全性非常严格。即使您实现==它也不起作用,除非您声明符合等同协议

struct MenuItem: Equatable {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String
    let landingItems: [LandingItem]

    static func == (lhs: MenuItem, rhs: MenuItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}

struct LandingItem: Equatable {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String

    static func == (lhs: LandingItem, rhs: LandingItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}

斯威夫特的打字安全性非常严格。即使您实现==它也不起作用,除非您声明符合等同协议

struct MenuItem: Equatable {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String
    let landingItems: [LandingItem]

    static func == (lhs: MenuItem, rhs: MenuItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}

struct LandingItem: Equatable {
    let image: UIImage
    let title: String
    let body: String
    let storyboardName: String
    let storyboardID: String

    static func == (lhs: LandingItem, rhs: LandingItem) -> Bool {
        return lhs.storyboardID == rhs.storyboardID
    }
}

如果我用字符串替换LandingItem,代码将编译。什么是LandingItem?@GeneZ.Ragan补充道!从Equatable@Ildar.Z哦。谢谢如果我用字符串替换LandingItem,代码将编译。什么是LandingItem?@GeneZ.Ragan补充道!从Equatable@Ildar.Z哦。谢谢因此,tl;医生:很明显。谢谢:)不客气@伊尔达:谢谢你的编辑。在电话上键入答案并不那么舒服;医生:很明显。谢谢:)不客气@伊尔达:谢谢你的编辑。在电话上键入答案并不那么舒服。