' CGFloat不能转换为' int'

时间:2015-04-02 09:43:54

标签: ios cocoa-touch swift

在尝试使用swift修复Xcode 6.2中的单个错误的过去几个小时里,我一直在苦恼。

spriteName = "tiki-top-0\(rand)"
    var toptiki = SKSpriteNode(imageNamed: spriteName)

    //This line gives me the error
    toptiki.position = CGPointMake(0, bottomtiki.position.y + heightBetweenObstacles) 

    tikiSet.addChild(toptiki)
    toptiki.physicsBody = SKPhysicsBody(rectangleOfSize: toptiki.size)
    toptiki.physicsBody?.dynamic = false
    toptiki.physicsBody?.categoryBitMask = category_tiki
    toptiki.physicsBody?.contactTestBitMask = category_car

我一直在各处搜索,出于某种原因,我真的只是认为某处存在语法错误。自从更新到Xcode 6之后,我遇到了与物理体相同的问题吗?.contactTestBitMask,以及它与之前的情况一样?'?'没有必要。但现在由于某种原因它必须被链接。

我这里没有使用CGFloat,为什么它告诉我不应该使用int?

非常感谢任何帮助,我真的不能再炒我的大脑了,哈哈,

1 个答案:

答案 0 :(得分:0)

我假设heightBetweenObstacles早先在这些方面定义:

let heightBetweenObstacles = 42

Swift将推断常量的类型,在这种情况下,它将推断Int。当您尝试将其添加到CGFloatbottomtiki.position.y + heightBetweenObstacles)时,会抱怨。只需明确指定类型:

let heightBetweenObstacles: CGFloat = 42

现在,您可以毫不费力地将常量添加到其他CGFloat