Xcode 10,类型Anyobject的值没有成员

时间:2019-10-25 11:22:25

标签: swift

说实话,我不知道应该怎么做,但是在Xcode 9中它可以正常工作,在10上我遇到了这些错误

open var x: Double { return _x }
    open var y: Double { return _y }
    open var xPx: CGFloat { return _xPx }
    open var yPx: CGFloat { return _yPx }
    open var dataSetIndex: Int { return _dataSetIndex }
    open var stackIndex: Int { return _stackIndex }
    open var axis: YAxis.AxisDependency { return _axis }

    open var isStacked: Bool { return _stackIndex >= 0 }

设置上次绘制该高光的位置的x和y位置(像素)。

open func setDraw(x: CGFloat, y: CGFloat) {
        self.drawX = x
        self.drawY = y
    }

设置上次绘制该高光的位置的x和y位置(像素)。

open func setDraw(pt: CGPoint) {
        self.drawX = pt.x
        self.drawY = pt.y
    }

    open override var description: String
    {
        return "Highlight, x: \(_x), y: \(_y), dataIndex (combined charts): \(dataIndex), dataSetIndex: \(_dataSetIndex), stackIndex (only stacked barentry): \(_stackIndex)"
    }

open override func isEqual(_ object: Any?) -> Bool
    {
        if object == nil
        {
            return false
        }

        if !(object! as AnyObject).isKind(of: type(of: self))
        {
            return false
        }

        if (object! as AnyObject).x != _x
        {
            return false
        }

        if (object! as AnyObject).y != _y
        {
            return false
        }

        if (object! as AnyObject).dataIndex != dataIndex      line1
        {
            return false
        }

        if (object! as AnyObject).datasetIndex != _dataSetIndex      line2
        {
            return false
        }

        if (object! as AnyObject).stackIndex != _stackIndex      line3
        {
            return false
        }

        return true
    }

错误在第1行中:类型为“ AnyObject”的值没有成员“ dataIndex” 第2行:“ AnyObject”类型的值没有成员“ dataIndex” line3:类型为“ AnyObject”的值没有成员“ stackIndex”;您是说'tagAtIndex'吗? 搜索但没有找到有用的

1 个答案:

答案 0 :(得分:0)

isEqual方法主体非常漂亮 objective-c-ish

如果您确实需要isEqual,请使用 swiftier 语法

open override func isEqual(_ object: Any?) -> Bool {
    guard let obj = object as? Self else { return false }
    return obj.x == x && obj.y == y && obj.dataIndex == dataIndex && obj.dataSetIndex == dataSetIndex && obj.stackIndex == stackIndex
}

旁注:

根本不要在Swift中使用下划线字符开头的私有支持属性。这也是一个不好的 objective-c-ish 传统习惯。如果需要常量,请声明常量。