ios - Swift Set union合并操作,如何去重
高洛峰
高洛峰 2017-04-18 09:40:43
0
1
491

如题,我想重写判断相等的方法,然后按照我的逻辑来进行去重。代码如下:

class Media: NSObject { var name = "" var serialNumber = "" init(name: String, serialNumber: String) { self.name = name self.serialNumber = serialNumber } override func isEqual(_ object: Any?) -> Bool { guard let other = object as? Media else { return false } return name == other.name && serialNumber == other.serialNumber } } func ==(lhs:Media, rhs: Media) -> Bool { return lhs.name == rhs.name && lhs.serialNumber == rhs.serialNumber } let media1 = Media(name: "Media1", serialNumber: "Serial1") let media2 = Media(name: "Media1", serialNumber: "Serial1") let media3 = Media(name: "Media2", serialNumber: "Serial1") let media4 = Media(name: "Media4", serialNumber: "Serial1") let set1 = Set(arrayLiteral: media1, media3) let set2 = Set(arrayLiteral: media2, media4) let newSet = set1.union(set2) print(newSet.count)

然后输出会有时是3,有时是4.这个我觉得特别奇怪。根据输出是通过isEqual方法来判断的,但是这个结果的不定性我不知道怎么办。

问题是,如何通过override的方式来控制【判断相等】的依据

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua (1)
黄舟

需要重写- (NSUInteger)hash

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!