类型不能转换为'NativeObject'

时间:2014-07-11 17:39:41

标签: swift xcode6

自从我将Xcode更新为版本6 beta 3后,我发现Type is not convertible to 'NativeObject'错误到处都是。 这只是一个抱怨的案例:

func createPointsToPath(points:[AnyObject]!) -> CGPathRef {
    let path:CGMutablePathRef = CGPathCreateMutable()
    CFAutorelease(path)

    if(points != nil && points.count > 0){ //this line complains about '[AnyObject]' is not convertible to 'NativeObject'
        var point:CGPoint = (points[0] as NSValue).CGPointValue()
        CGPathMoveToPoint(path, nil, point.x, point.y)

        println("number of elements in the array \(points.count)")
        for index in 1...points.count - 1  {
            point = (points[index] as NSValue).CGPointValue()
            CGPathAddLineToPoint(path, nil, point.x, point.y)
        }
    }
    return path
}

如代码评论中所述,它在'[AnyObject]' is not convertible to 'NativeObject'我抱怨points != nil

1 个答案:

答案 0 :(得分:2)

更新

从Beta 5开始,选项不再被视为布尔类型,您必须明确地与nil进行比较。这个答案不再有效,但对于后人我把它留在了下面。当然,由于Swift编译器的奥秘,您的原始代码现在可以使用新的更新。

旧的无效答案:

你可以说:

if points && points.count > 0

nil使用选项评估为false,因此这应该有效。