Ios 在Swift项目中找不到接受类型为“(()->\”的参数列表的类型为“CGSize”的初始值设定项

Ios 在Swift项目中找不到接受类型为“(()->\”的参数列表的类型为“CGSize”的初始值设定项,ios,xcode,swift,cgsize,Ios,Xcode,Swift,Cgsize,我正在斯坦福大学学习一门课程,并收到以下错误: Cannot find an initializer for type 'CGSize' that accepts an argument list of type '(() -> _)' 本课程仅在几个月前教授,但使用的是Xcode 6.2而不是Xcode 6.3。我需要采取什么不同的措施来纠正此错误 这是第12讲-动态动画- 首先,您键入的CGFloat不正确。它是CGFloat而不是CGFloat 对于第二部分,将dropSize

我正在斯坦福大学学习一门课程,并收到以下错误:

Cannot find an initializer for type 'CGSize' that accepts an argument list of type '(() -> _)' 
本课程仅在几个月前教授,但使用的是Xcode 6.2而不是Xcode 6.3。我需要采取什么不同的措施来纠正此错误

这是第12讲-动态动画-


首先,您键入的CGFloat不正确。它是CGFloat而不是CGFloat

对于第二部分,将dropSize中的“=”更改为“:”

var dropSize : CGSize {
    let size = gameView.bounds.size.width / CGFloat(dropsPerRow)
    return CGSize(width: size, height: size)
}

此外,这是我第一次看到在Swift中使用“=”而不是“:”,因为它发布了…

首先,您键入的CGFloat不正确。它是CGFloat而不是CGFloat

对于第二部分,将dropSize中的“=”更改为“:”

var dropSize : CGSize {
    let size = gameView.bounds.size.width / CGFloat(dropsPerRow)
    return CGSize(width: size, height: size)
}

此外,这是我第一次看到在Swift中使用“=”而不是“:”,因为它发布了…

这是您课程中的代码:

var dropSize: CGSize {
    let size = gameView.bounds.size.width / CGFloat(dropsPerRow)
    return CGSize(width: size, height: size)
}

您只需检查您的代码和课程代码,它就会帮助您。

这是您课程的代码:

var dropSize: CGSize {
    let size = gameView.bounds.size.width / CGFloat(dropsPerRow)
    return CGSize(width: size, height: size)
}

您只需检查您的代码和课程中的代码,它就会帮助您。

在第一个错误中,您需要使用构造函数来创建dropSize。我建议添加您自己的:

static func calculateDropSize(width: CGFloat, dropsPerRow: UInt32) -> CGSize {
    let size = CGFloat(width / CGFloat(dropsPerRow))
    return CGSize(width: size, height: size)
}
然后,将该行改写为:

var dropSize = MyClass.calculateDropSize(gameView.bounds.size.width, dropsPerRow: dropsPerRow)
您可以添加该函数作为CGSize的扩展,但从面向对象的角度来看,这是不可取的

您的第二个错误只需强制执行:

var frame = CGRect(origin: CGPointZero, size: CGFloat(dropSize))
正如Gasim评论的那样,您的第三个错误是CGFloat输入错误:

private extension CGFloat {

在第一个错误中,您需要使用构造函数来创建dropSize。我建议添加您自己的:

static func calculateDropSize(width: CGFloat, dropsPerRow: UInt32) -> CGSize {
    let size = CGFloat(width / CGFloat(dropsPerRow))
    return CGSize(width: size, height: size)
}
然后,将该行改写为:

var dropSize = MyClass.calculateDropSize(gameView.bounds.size.width, dropsPerRow: dropsPerRow)
您可以添加该函数作为CGSize的扩展,但从面向对象的角度来看,这是不可取的

您的第二个错误只需强制执行:

var frame = CGRect(origin: CGPointZero, size: CGFloat(dropSize))
正如Gasim评论的那样,您的第三个错误是CGFloat输入错误:

private extension CGFloat {

你写错了。这不是CGFLoat,而是CGFLoat。谢谢你,我对这个还很陌生,我不敢相信我错过了。我们中最好的人都会遇到这样的情况:你把CGFLoat写错了。这不是CGFLoat,而是CGFLoat。谢谢你,我对这一点还是很陌生,我不敢相信我错过了。我们中最好的人都会这样:我不得不不同意你的观点,因为你为什么要将CGSize转换为CGSize?他有一个cast问题,因为他实际上有一个语法问题:他键入了=而不是:。如果他和你一起去解决这个问题,他仍然不需要向CGFloat施压……我不同意你的观点,因为你为什么要向CGSize施压?他有一个cast问题,因为他实际上有一个语法问题:他键入了=而不是:。如果他和你一起走解决这个问题的道路,他仍然不需要投CGFloat。。。