2015-10-10 5 views
2

Как преобразовать эту функцию в swift? Я получаю ошибку, которую я не понимаю. Вам понадобится «import QuartzCore» в вашем классе.Невозможно преобразовать двойной тип ожидаемого аргумента CGFloat

Objective C Код

void DrawGridlines(CGContextRef context, CGFloat x, CGFloat width) 
{ 
    for (CGFloat y = -48.5; y <= 48.5; y += 16.0) 
    { 
     CGContextMoveToPoint(context, x, y); 
     CGContextAddLineToPoint(context, x + width, y); 
    } 
    CGContextSetStrokeColorWithColor(context, graphLineColor()); 
    CGContextStrokePath(context); 
} 

Swift Code

func DrawGridLines(context:CGContextRef, x:CGFloat, width:CGFloat) 
{ 
    for var y = -48.5; y <= 48.5; y += 16.0 
    { 
     CGContextMoveToPoint(context, x, y); 
     CGContextAddLineToPoint(context, x + width, y); 
    } 
    //CGContextSetStrokeColorWithColor(context, graphLineColor()); 
    //CGContextStrokePath(context); 
} 
+0

Непонятно о проблеме. Является ли название вашим текстом ошибки? Вы получили ошибку в первой строке вашего цикла? – Prune

ответ

3

Swift очень строга с типами переменных. Поскольку вы не дали y типа, Swift предположил, что это был Double.

Переменный y должен быть CGFloat, потому что прототип функции, который он передал, равен func CGContextMoveToPoint(c: CGContext?, _ x: CGFloat, _ y: CGFloat). Вы можете объявить тип inline в инструкции for:

for var y:CGFloat = -48.5; y <= 48.5; y += 16.0 
+0

Супер. Спасибо! – Aaronium112

Смежные вопросы