В Objective-C вы делаете что-то в строках
- (BOOL)isEqual:(id)other {
if (other == self)
return YES;
if (!other || ![other isKindOfClass:[self class]])
return NO;
return [self.customProperty isEqual:other.customProperty];
}
Моя первая наивная попытка в быстрой последовательности выглядит следующим образом
func isEqual(other: AnyObject) -> Boolean {
if self === other {
return true
}
if let otherTyped = other as? MyType {
return self.myProperty == otherTyper.myProperty
}
return false
}
Но я далеко не доволен этим. Я даже не знаю, правильна ли подпись или мы должны использовать что-либо другое, чем isEqual
.
Любые мысли?
EDIT:
Я также хотел бы сохранить совместимость Objective-C (мой класс используется как в устаревшем коде Obj-C, так и в новом коде Swift). Поэтому я думаю, что переопределения ==
недостаточно. Я не прав?