ios - Swiftt3:如果不重复,则追加到数组的扩展

标签 ios arrays swift3

我正在尝试编写Array的扩展,仅当该元素已不存在于Array中时才将该元素追加到Array中。

这是我的代码:

extension MutableCollection where Iterator.Element: Equatable {
    mutating func addObjectIfNew <T: Equatable> (_ item: T)  {
        if !self.contains(item as! Self.Iterator.Element) { 
            self.append(x as! Self.Iterator.Element) // offending line
        }
    }
}

我收到此错误:

错误:类型为“Self”的值没有成员“append”

编写此类扩展的正确方法是什么?

更新:我无法使用Set,因为我需要对需要索引的对象(即Array)执行此操作

最佳答案

您已经将collection元素限制为可等于的,因此无需在您的方法上创建新的通用可等于的类型:

extension RangeReplaceableCollection where Element: Equatable {
    mutating func appendIfNotContains(_ element: Element)  {
        if !contains(element) { append(element) }
    }
}

关于ios - Swiftt3:如果不重复,则追加到数组的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796895/

相关文章:

c++ - 以下 c++ 函数中的数组重新分配在函数调用后似乎已被忽略。

ios - RestKit删除孤立对象规则

ios - UIImage 上的 UILabel 并将该图像保存在 Swift 3 中的图库中以用于照片编辑应用程序

ios - 根据设备区域设置格式化日期字符串

iphone - 未访问 cachedResponseForRequest 方法

ios - 将应用程序上传到应用程序商店,支持 iPad,稍后支持 iPhone

ios - 添加新的构建规则来解析所有 rtf 文件

ios - 如何在 Firebase 中将项目更新/添加到 JSON 数组?

Java HashMap<Integer, Integer> 与 int[]

char 数组可以用于任何数据类型吗?