У меня есть объект, допустим, он называется «Событие». Событие имеет несколько опций.
struct Event {
var name: String!
var location: String?
var attendees: [String]?
var dresscode: String?
var startDate: NSDate!
var endDate: NSDate?
var description: String {
return "Name: \(name). Location: \(location). Attendees: \(attendees). Dresscode: \(dresscode). Start date: \(startDate). End date: \(endDate)."
}
}
Когда я вызываю описание, оно возвращает строку, и в зависимости от того, существуют они или нет, необязательные значения возвращают nil или «Необязательно (имя события)». Я хочу, чтобы некоторые свойства были нулевыми и возвращали развернутое значение, если они существуют.
Я рассматривал этот вариант:
var description: String {
switch (location, attendees, dresscode, endDate) {
//All available
case let (.Some(location), .Some(attendees), .Some(dresscode), .Some(endDate)):
return "Name: \(name). Location: \(location). Attendees: \(attendees). Dresscode: \(dresscode). Start date: \(startDate). End date: \(endDate)."
case let (.None, .Some(attendees), .Some(dresscode), .Some(endDate)):
return "Name: \(name). Location: Not Set. Attendees: \(attendees). Dresscode: \(dresscode). Start date: \(startDate). End date: \(endDate)."
default: return "Something."
}
Это работает, но для меня, чтобы охватить все случаи, это займет вечность. Он может содержать сотни дел.
Итак, мой вопрос: есть ли более простой способ сделать это? Вернуть nil, если он недоступен, и развернуть, если он есть.
Благодарю вас!