我是Swift的新手,我正在尝试遵循斯坦福大学的CS193P课程。 我最初输入的代码却有多处错误,因此我在论坛上找不到解决方案,我从提供的Democode中复制了代码。 现在我得到错误,但与以前不一样。 这是包含错误的文件:
//
//ViewController.swift
// FaceIt
//
// Created by CS193p Instructor.
// Copyright © 2017 Stanford University. All rights reserved.
//
import UIKit
class ViewController: UIViewController
{
var expression = FacialExpression(eyes: .closed, mouth: .frown) {
didSet {
updateUI()
}
}
private func updateUI()
{
switch expression.eyes {
case .open:
FaceView?.eyesOpen = true
case .closed:
FaceView?.eyesOpen = false
case .squinting:
FaceView?.eyesOpen = false
}
FaceView?.mouthCurvature = mouthCurvatures[expression.mouth] ?? 0.0
}
private let mouthCurvatures =
[FacialExpression.Mouth.grin:0.5,.frown:-1.0,.smile:1.0,.neutral:0.0,.smirk:-0.5]
}
我无法理解为什么它会说"键入' FaceView?'没有会员' eyesOpen' 与FaceView文件一样,它包含代码:
class FaceView: UIView
{
// Public API
// 1.0 is full smile and -1.0 is full frown
@IBInspectable
var mouthCurvature: Double = 0.5 { didSet { setNeedsDisplay() } }
@IBInspectable
var eyesOpen: Bool = true { didSet { setNeedsDisplay() } }
@IBInspectable
var scale: CGFloat = 0.9 { didSet { setNeedsDisplay() } }
@IBInspectable
var lineWidth: CGFloat = 5.0 { didSet { setNeedsDisplay() } }
@IBInspectable
var color: UIColor = UIColor.blue { didSet { setNeedsDisplay() } }
func changeScale(byReactingTo pinchRecognizer: UIPinchGestureRecognizer)
{
对于' mouthCurvature'我也会遇到同样的错误。 我唯一怀疑的是我设置FacialExpression的文件类型,就像在讲座中讲师拖动它告知某个地方。我把它设置为Cocoa Touch文件。这是我收到错误的原因吗? 否则任何人都可以解释为什么我会收到此错误?
答案 0 :(得分:1)
您的eyesOpen
属性是一个实例属性 - 它存在于FaceView
类型的实例上,而不是FaceView
类型本身。您应该声明类型为FaceView?
的属性,然后引用它而不是类名(使用类名的时间是在您访问声明为class var
/ {{的成员时1}} / let
或func
/ static var
/ let
,因此属于类型本身,而不属于该类型的特定实例)。所以,做一些像:
func