Ошибка типа преобразования CGPoint в CGFloat в Swift

#ios #swift #sprite-kit

#iOS #swift #sprite-kit

Вопрос:

    var _deltaTime = NSTimeInterval()

   var _pointsPerScndSpeed = Double()

   var bgVelocity: CGPoint = CGPointMake(_pointsPerScndSpeed, 0.0)

      //Cannot convert the expression's to type 'CGFloat'

     var amToMove:CGPoint = CGPointMake(bgVelocity.x * _deltaTime, bgVelocity.y * _deltaTime)

       //Could not find an overload for '*' that accepts the supplied Arguments
  

Комментарии:

1. @Yatheesha: Он компилируется на 64-разрядной версии, но не на 32-разрядной.

Ответ №1:

Члены CGPoint имеют тип CGFloat , который является a Float для 32-разрядной архитектуры и Double для 64-разрядной архитектуры. Swift неявно преобразует типы. Вы можете либо использовать CGFloat последовательно в своем коде, либо добавить явные приведения:

 var bgVelocity: CGPoint = CGPointMake(CGFloat(_pointsPerScndSpeed), 0.0)
var amToMove:CGPoint = CGPointMake(bgVelocity.x * CGFloat(_deltaTime), bgVelocity.y * CGFloat(_deltaTime))