Swift </prototocol>中Array <prototocol>中的对象索引

时间:2014-06-06 15:15:00

标签: cocoa swift

我想获取当前主题的索引。 我的主题列表按以下方式声明

var themes:Array<ThemeProtocol> = []

我尝试过使用 let currentIndex = find(self.themes, self.currentTheme)但它不起作用。 enter image description here

我也尝试过使用

func currentThemeIndex()->Int? {
        let indecies = enumerate(self.themes)
        for (index, item) in indecies {
            if self.currentTheme == item {
                return index
            }
        }
        return nil
    }

enter image description here 知道我做错了吗?

2 个答案:

答案 0 :(得分:3)

==要求两个对象存在等价运算符(从目标C中考虑isEqual:

===等同于Objective-C运算符==

要使对象等价操作起作用,您需要定义一个等价运算符:

@infix func == (left:Vector2D, right: Vector2D) -> Bool {
    return left.x == right.x && left.y == right.y
}

@infix func != (left:Vector2D, right:Vector2D) -> Bool {
    return !(left == right)
}

这完全可以通过iTunes书店免费获得Apple参考指南。

请注意,这些函数是使用模块范围定义的(即,在任何类和/或结构声明之外)

答案 1 :(得分:1)

确保ThemeProtocol符合Equatable协议。或者在比较时使用===而不是==,如果您确定没有明显的“等于”实例。