Как сделать так, чтобы метка использовала разные строки для указанных дат?

Моя идея состоит в том, чтобы сделать ios-приложение, которое отображает сегодняшний обед на моей работе. Я не знаю, как к этому подойти. Моя собственная мысль состояла в том, чтобы иметь UIDatePicker (по умолчанию установлен на текущий день) и иметь функции, которые будут реагировать на различные даты. Это какой-то код, чтобы проиллюстрировать идеи в моей голове.

var dateFromPicker = UIDatePicker.date
@IBOutlet weak var lunchLabel: UILabel!

func februaryFirst {
    let dateFebruaryFirst = ...
    if dateFromPicker = dateFebruaryFirst {
        lunchLabel.text = ("Fish'n chips")
    }
 }

func februarySecond {
    let dateFebruarySecond = ...
    if dateFromPicker = dateFebruarySecond {
        lunchLabel.text = ("Noodlesoup")
    }
}

2 ответа

  1. Вы, вероятно, хотите использовать DateComponents, чтобы проверить, какой день / месяц определенная дата. Например:

    func februarySecond {
        // Get the day and month of the given date
        let dateFromPickerComponents = Calendar.current.dateComponents([.day, .month], from: dateFromPicker)
        // Check whether the day and month match Feb 2
        if dateFromPickerComponents.day == 2 && dateFromPickerComponents.month == 2 {
            lunchLabel.text = ("Noodlesoup")
        }
    }
    
  2. Можно использовать switchоператор, который поддерживает несколько значений:

    let dateFromPicker = UIDatePicker.date
    let components = Calendar.current.dateComponents([.month, .day], from: dateFromPicker)
    switch (components.month!, components.day!) { // first month then day
      case (1,14): print("suprise")
      case (2,1): print("Fish'n chips")
      case (2,2): print("Noodlesoup")
    
      default: print("fast day")
    
    }