2017-06-29 92 views
-1

我在swift中遇到struct问题。首先,我是开发应用程序的新手,但我正在尽力学习。 几天前,我发布了自己的代码,有人告诉我最好是在关卡上使用结构和工作,但说实话..我在网上查找4天左右如何使用结构..但我不知道如何..如何在Xcode中创建结构,在struct中使用级别并将它们读入新函数中?

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

@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) { 
    } 

} 

那么,我想在这里做...当我点击Next按钮我想显示2幅图像(左和右)和一个按钮(playSound)。声音必须链接到两个图像中的一个。我的问题是...我不知道如何做到这一点..我不知道如何使用结构..

+0

实质上,这里有两个问题。 “结构如何工作?”和“我的代码出了什么问题?”您可能需要针对每个问题发布单独的问题或编辑您的问题,以便查询其中的一个。 – ColGraff

回答

0

Swift中structclass之间的主要区别是结构体具有值语义和类具有引用语义:

Value and Reference Types

类型在夫特分为两类中的一种:首先,“值类型”,其中每个实例保持其数据,通常被定义为一种独特的复制structenum或元组。第二种是“参考类型”,其中实例共享单个数据副本,类型通常定义为class。如果你在一个变量创建一个struct的一个实例,并将其分配给另一个变量

所以,你就可以有机会第二个变量,而不会影响第一。相反,如果它是class,那么更改第二个会更改第一个,因为每个变量都是对实际存储的引用。

除此之外,结构和类都几乎相同。在声明诸如mutable方法之类的东西时存在一些差异,但它们不应该影响您在此处执行的操作。

相关问题