如何在Xcode中创建struct,在struct中使用level并将它们读入一个新函数?

时间:2017-06-29 13:30:20

标签: ios swift xcode struct

我对swift中的struct有一点问题。首先,我是开发应用程序的新手,但我正在尽力学习。 几天前,我发布了我的代码,有人告诉我最好使用struc和在关卡上工作,但老实说..我在网上看了大约4天如何使用结构。但我无法弄清楚如何......

我在这里发布代码......我希望有人会照亮我如何调整代码。

@IBOutlet weak var leftImage: UIImageView!
@IBOutlet weak var rightImage: UIImageView!
@IBOutlet weak var sh: UIImageView!

enum correctImageType {
    case left, right
}

struct Level {
    var word: String
    var leftImage: UIImage
    var rightImage: UIImage
    var soundFile: String
    var correctImage: correctImageType

    init(word: String, leftImage: UIImage, rightImage: UIImage, soundFile: String, correctImage: correctImageType) {
        self.word = word
        self.leftImage = leftImage
        self.rightImage = rightImage
        self.soundFile = soundFile
        self.correctImage = correctImage

    }

}

var level1 = Level(word: "dog", leftImage: UIImage(named: "foto1.png")!, rightImage: UIImage(named: "foto5.png")!, soundFile: "s1", correctImage: .left)
var level2 = Level(word: "horse", leftImage: UIImage(named: "foto5.png")!, rightImage: UIImage(named: "foto3.png")!, soundFile: "s5", correctImage: .right)


@IBAction func nextImage(_ sender: Any) {
    leftImage.image = level1.leftImage
    leftImage.isUserInteractionEnabled = true
    self.view.addSubview(leftImage)
    let gesture1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap1))
    leftImage.addGestureRecognizer(gesture1)



}
func singleTap1() {
    if correctImageType.left == level1.correctImage {

        print("ok")
    } else {

        print("not ok")
    }
}


var player: AVAudioPlayer!

@IBAction func playSound(_ sender: Any) {
    }

}

所以,我在这里尝试做什么......当我点击nextButton时,我想要显示2个图像(左和右)和一个按钮(playSound)。声音必须链接到两个图像中的一个。我的问题是......我不知道如何实现这一点..我不知道如何使用结构..

1 个答案:

答案 0 :(得分:0)

Swift中structclass之间的主要区别在于结构具有值语义,类具有引用语义:

Value and Reference Types

  

Swift中的类型分为两类:第一类是“值类型”,其中每个实例都保留其数据的唯一副本,通常定义为structenum或元组。第二个是“引用类型”,其中实例共享数据的单个副本,类型通常定义为class

因此,如果您在一个变量中创建struct的实例并将其分配给另一个变量,您将能够在不影响第一个变量的情况下获得第二个变量。相反,如果它是class,则更改第二个将改变第一个,因为每个变量都是对实际存储的引用。

除此之外,结构和类几乎完全相同。声明mutable方法之类的内容存在一些差异,但它们不应影响您在此处所做的事情。