Peringatan pemula.

Saya ingin menggunakan kode yang sama ini, pada beberapa halaman foto (untuk membantu anak saya mengenali orang). Jadi, alih-alih memasukkan kembali nama setiap orang, saya membuat munculInPhoto (kamus), jadi saya hanya dapat menggunakan .a .b .c, daripada harus mengganti nama setiap baris kode.

Apakah ada cara untuk menyederhanakan kode lebih lanjut. Jadi saya hanya dapat memiliki kode yang memeriksa, jika Tombol ditekan (periksa sender.currentTitle sama dengan salah satu nilai kamus jika ya, jalankan kode ini:

print("pressed \(appearingInPhoto.a)")
        label.text = appearingInPhoto.a
        soundName = appearingInPhoto.a

Ini adalah fungsi penuh sekarang.

  var appearingInPhoto = (a:"omar", b:"john", c:"thomas")

  @IBAction func buttonPressed(_ sender: UIButton) {
    var soundName: String? = nil
    if sender.currentTitle == appearingInPhoto.a {
        print("pressed \(appearingInPhoto.a)")
        label.text = appearingInPhoto.a
        soundName = appearingInPhoto.a
    }else if sender.currentTitle == appearingInPhoto.b {
        print("pressed \(appearingInPhoto.b)")
        label.text = appearingInPhoto.b
        soundName = appearingInPhoto.b
    }else if sender.currentTitle == appearingInPhoto.c {
        print("pressed \(appearingInPhoto.c)")
        label.text = appearingInPhoto.c
        soundName = appearingInPhoto.c
    }
    if let soundName = soundName {
        playSoundFile(soundName)
    }
  }

Terima kasih sebelumnya.

0
mikeT 13 Januari 2018, 00:44

1 menjawab

Jawaban Terbaik

Anda cukup menggunakan Array atau Set, bersama dengan contains(_:):

let photoSubjects: Set = ["omar", "john", "thomas")

@IBAction func buttonPressed(_ sender: UIButton) {
    let title = sender.currentTitle

    guard photoSubjects.contains(title) else { return }

    print("pressed \(title)")
    label.text = title
    let soundName = title
    playSoundFile(soundName)
}
2
Alexander 12 Januari 2018, 22:31