я хочу ввести имя студента в текстовое поле и показать его оценку на этикетке (swift 4) - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу ввести имя учащегося в текстовое поле и показать его оценку на ярлыке. У меня есть словарь с именем учащегося и его оценкой, и я хочу ввести имя учащегося в текстовое поле и нажать кнопку, а затем его оценку.появляется на этикетке, и каждый раз, когда я ставлю имя студента, я хочу, чтобы его оценка появлялась

import UIKit

class ViewController: UIViewController {

let studentsNamesAndGrades = ["Bushra":92,"Reem":80,"Maha":100,"Leen":74,"Sara":85]

@IBOutlet weak var myLabel2: UILabel!

@IBOutlet weak var myTextField: UITextField!

@IBAction func myButton2(_ sender: Any) {

}

override func viewDidLoad() {
    super.viewDidLoad()

}    
}

извините, я новичок в xcode, когда я ставлю ваши коды, я получаю сообщение об ошибке

Невозможно добавить значение типа «[String: Int]» с индексом типа «String?»

, которое появилось после этого кода

 let studentGrade = studentsNamesAndGrades[nameFromField]

1 Ответ

0 голосов
/ 21 сентября 2019

Чтобы сделать это, вам нужно, чтобы ваше действие осуществляло ввод текста из поля и использовало его как key для словаря.Если имя соответствует тексту из поля, value этого ключа будет помещен в метку.

@IBAction func myButton2(_ sender: Any) {
  myLabel2.text = "\(studentsNamesAndGrades[myTextField.text])"
}

Тот же код в деталях:

@IBAction func myButton2(_ sender: Any) {
  let nameFromField = myTextField.text 
  let studentGrade = studentsNamesAndGrades[nameFromField] // this will produce optional Int
  if let studentGrade = studentGrade { // this will unwrap optional
    myLabel2.text = "\(studentGrade)" // this will interpolate Int value as String and assign to the labelText
  } else { // if unwrapping failed meaning there's no value for this key
    myLabel2.text = "No grade for this student found"
  }

}
...