2017-06-29 37 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方法之類的東西時存在一些差異,但它們不應該影響您在此處執行的操作。

相關問題