我正在使用Cocoa进行O‘’Reilly的Swift开发,并得到以下错误:
Bound value in a conditional binding must be of Optional type针对以下代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var dynamicAnimator = UIDynamicAnimator()
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if let dynamicAnimator = UIDynamicAnimator(referenceView: self.view) {
// creating and adding a gravity behaviour
let gravityBehaviour = UIGravityBehavior(items: [self.imageView])
dynamicAnimator.addBehavior(gravityBehaviour)
// creating and adding a collision behaviour
let collisionBehaviour = UICollisionBehavior(items: [self.imageView])
collisionBehaviour.translatesReferenceBoundsIntoBoundary = true
dynamicAnimator.addBehavior(collisionBehaviour)
self.dynamicAnimator = dynamicAnimator
}
}
}此错误适用于这一行:
if let dynamicAnimator = UIDynamicAnimator(referenceView: self.view) {当我向dynamicAnimator添加问号以使其可选时,我会得到新的错误:
Expected '{' after 'if' condition
Variable binding in a condition requires an initializer
Braced block of statements is an unusual closure我现在正在阅读关于可选类型的文章,以尝试理解它们,但这是书中的直接代码。我查看了他们的论坛和勘误表,没有人提到这个问题。有人有什么想法吗?
谢谢
发布于 2014-11-14 01:34:25
UIDynamicAnimator初始化器是不可失败的,就像某些类一样,因此您不会在该行中获得一个可选的值。如果没有可选的值,if let...构造就没有意义,所以编译器不允许您编写它。只要去掉if部件,你就会没事的。
let dynamicAnimator = UIDynamicAnimator(referenceView: self.view)
// no braces, either
// ...https://stackoverflow.com/questions/26919822
复制相似问题