我对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)。声音必须链接到两个图像中的一个。我的问题是......我不知道如何实现这一点..我不知道如何使用结构..
答案 0 :(得分:0)
Swift中struct
和class
之间的主要区别在于结构具有值语义,类具有引用语义:
Swift中的类型分为两类:第一类是“值类型”,其中每个实例都保留其数据的唯一副本,通常定义为
struct
,enum
或元组。第二个是“引用类型”,其中实例共享数据的单个副本,类型通常定义为class
。
因此,如果您在一个变量中创建struct
的实例并将其分配给另一个变量,您将能够在不影响第一个变量的情况下获得第二个变量。相反,如果它是class
,则更改第二个将改变第一个,因为每个变量都是对实际存储的引用。
除此之外,结构和类几乎完全相同。声明mutable
方法之类的内容存在一些差异,但它们不应影响您在此处所做的事情。