键入???没有会员

时间:2018-02-23 20:14:47

标签: swift

我是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文件。这是我收到错误的原因吗? 否则任何人都可以解释为什么我会收到此错误?

1 个答案:

答案 0 :(得分:1)

您的eyesOpen属性是一个实例属性 - 它存在于FaceView类型的实例上,而不是FaceView类型本身。您应该声明类型为FaceView?的属性,然后引用它而不是类名(使用类名的时间是在您访问声明为class var / {{的成员时1}} / letfunc / static var / let,因此属于类型本身,而不属于该类型的特定实例)。所以,做一些像:

func