我正在尝试构建一个扩展,将NSArray/NSMutableArray的一些便利功能添加到Swift Array类中,我正在尝试添加此函数:
func indexOfObject(object:AnyObject) -> Int? {
if self.count > 0 {
for (idx, objectToCompare) in enumerate(self) {
if object == objectToCompare {
return idx
}
}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这一行:
if object == objectToCompare {
Run Code Online (Sandbox Code Playgroud)
给出错误:
无法找到接受提供的参数的'=='的重载
我做错了什么导致这个错误?
extension Array {
func indexOfObject(object:AnyObject) -> Int? {
if self.count > 0 {
for (idx, objectToCompare) in enumerate(self) {
if object == objectToCompare {
return idx
}
}
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
您始终可以创建使用NSArray的indexOfObject的扩展,例如:
extension Array {
func indexOfObject(object:AnyObject) -> Int? {
return (self as NSArray).indexOfObject(object)
}
}
Run Code Online (Sandbox Code Playgroud)
您可以指定可以将数组项与<T : Equatable>约束进行比较,然后可以将对象转换为T比较它们,例如:
extension Array {
func indexOfObject<T : Equatable>(o:T) -> Int? {
if self.count > 0 {
for (idx, objectToCompare) in enumerate(self) {
let to = objectToCompare as T
if o == to {
return idx
}
}
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |