我想获取当前主题的索引。 我的主题列表按以下方式声明
var themes:Array<ThemeProtocol> = []
我尝试过使用
let currentIndex = find(self.themes, self.currentTheme)
但它不起作用。
我也尝试过使用
func currentThemeIndex()->Int? {
let indecies = enumerate(self.themes)
for (index, item) in indecies {
if self.currentTheme == item {
return index
}
}
return nil
}
知道我做错了吗?
答案 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
协议。或者在比较时使用===
而不是==
,如果您确定没有明显的“等于”实例。