【问题标题】:'CGFloat is not convertible to 'int''CGFloat 不能转换为'int'
【发布时间】:2015-04-02 09:43:54
【问题描述】:

在过去的几个小时里,我一直在想如何使用 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 以来,我对物理体有同样的问题吗?没有必要。但是现在由于某种原因它必须被锁住。

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

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

【问题讨论】:

  • heightBetweenObstacles是什么类型
  • 请注意CGPointMake 将两个CGFloats 作为参数,而不是Ints。
  • 它是前面代码中定义为'let heightBetweenObstacles = 907'的常量
  • bottomtiki.position.y 可能是CGFloat,其中添加了(尝试)Int
  • 对不起,我是编码新手。如果您不介意,那看起来会如何写出来?我已经在代码'bottomtiki.position = CGPointMake(0, CGFloat(yPos))'中设置了这个

标签: ios cocoa-touch swift


【解决方案1】:

我假设 heightBetweenObstacles 之前是按照这些思路定义的:

let heightBetweenObstacles = 42

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

let heightBetweenObstacles: CGFloat = 42

现在您可以轻松地将常量添加到其他CGFloats。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多