从全局范围访问super

时间:2014-08-16 13:48:53

标签: ios objective-c swift

Objective C中有一个代码我尝试使用swift进行翻译,包括将isEqual:function更改为== operand。问题是代码要求我检查被比较实例的超级,但是从运营商功能所在的全局范围来看这是不可能的。

还有其他方法可以将此代码迁移到swift吗?

    - (BOOL)isEqual:(id)object
{
    AAPLCollectionViewGridLayoutAttributes *other = object;
    if (![super isEqual:other])
        return NO;
    return YES;
}

1 个答案:

答案 0 :(得分:0)

您可以将解决方案分为两个步骤:

1)定义AAPLCollectionViewGridLayoutAttributes的扩展名,覆盖isEqual方法。 (在这里你可以访问超级)。

extension AAPLCollectionViewGridLayoutAttributes {
    public override func isEqual(object: AnyObject!) -> Bool {
        // your custom logic will go here
        var other = object as AAPLCollectionViewGridLayoutAttributes
        return super.isEqual(other)
    }
}

2)重载==运算符,只需调用上面定义的方法。

public func ==(lhs: AAPLCollectionViewGridLayoutAttributes, rhs: AAPLCollectionViewGridLayoutAttributes) -> Bool {
    return lhs.isEqual(rhs)
}

请注意我使用了" public"修饰符两次,它们应该与类AAPLCollectionViewGridLayoutAttributes的访问修饰符兼容。