我正在与斯坦福大学的 class 一起工作,并收到此错误:

Cannot find an initializer for type 'CGSize' that accepts an argument list of type '(() -> _)'

该 class 是几个月前才讲授的,但是使用的是Xcode 6.2而不是Xcode 6.3。我需要采取其他措施来纠正此错误?

这是讲座12-动态动画-http://web.stanford.edu/class/cs193p/cgi-bin/drupal/


import UIKit

class DropItViewController: UIViewController {


    @IBOutlet weak var gameView: UIView!

    var dropsPerRow = 10

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

    @IBAction func drop(sender: UITapGestureRecognizer) {
        drop()
    }

    func drop() {
        var frame = CGRect(origin: CGPointZero, size: dropSize)
        frame.origin.x = CGFloat.random(dropsPerRow) * dropSize.width

        let dropView = UIView(frame: frame)
        dropView.backgroundColor = UIColor.random

        gameView.addSubview(dropView)
     }
    }

    private extension CGFLoat {
    static func random(max: Int) -> CGFloat {
        return CGFloat(arc4random() % UInt32(max))

    }
    }

    private extension UIColor {
    class var random: UIColor {
        switch arc4random()%5 {
        case 0: return UIColor.greenColor()
        case 1: return UIColor.blueColor()
        case 2: return UIColor.orangeColor()
        case 3: return UIColor.redColor()
        case 4: return UIColor.purpleColor()
        default: return UIColor.blackColor()

    }
}

}

最佳答案

首先,您键入CGFloat错误。不是CGF l 燕麦,而是CGF L 燕麦。

对于第二部分,在dropSize中将'='更改为':':

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

另外,这是我自Swift发行以来第一次看到'='而不是':'。

关于ios - 在Swift Project中找不到类型为'CGSize'的初始化程序,该初始化程序接受类型为((()-> _))的参数列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29856333/

10-10 16:05