无法将 Double 转换为预期的参数类型 CGFloat
Cannot convert Double to expected argument type CGFloat
如何将此函数转换为 swift?我收到一个我不明白的错误。您的 class.
中需要 "import QuartzCore"
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代码
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);
}
Swift 对变量类型非常严格。由于您没有给 y
类型,Swift 推断它是 Double
.
变量 y
需要是 CGFloat
因为它传递给的函数原型是 func CGContextMoveToPoint(c: CGContext?, _ x: CGFloat, _ y: CGFloat)
。您可以在 for
语句中内联声明类型:
for var y:CGFloat = -48.5; y <= 48.5; y += 16.0
在我的例子中,我不得不将 Double
值转换为 CGFloat
并且错误消失了。
let newCGFloatVal = cgFloatVal * CGFloat(doubleVal)
如何将此函数转换为 swift?我收到一个我不明白的错误。您的 class.
中需要 "import QuartzCore"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代码
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);
}
Swift 对变量类型非常严格。由于您没有给 y
类型,Swift 推断它是 Double
.
变量 y
需要是 CGFloat
因为它传递给的函数原型是 func CGContextMoveToPoint(c: CGContext?, _ x: CGFloat, _ y: CGFloat)
。您可以在 for
语句中内联声明类型:
for var y:CGFloat = -48.5; y <= 48.5; y += 16.0
在我的例子中,我不得不将 Double
值转换为 CGFloat
并且错误消失了。
let newCGFloatVal = cgFloatVal * CGFloat(doubleVal)