Имам обект, да кажем, че се нарича „Събитие“. Събитието има няколко опции.
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)."
}
}
Когато извикам описанието, то ще върне низ и в зависимост от това дали съществуват или не незадължителните стойности ще върнат нула или „По избор (име на събитие)“. Искам опцията за някои от свойствата да е нула и да връща разопакованата стойност, ако съществува.
Гледах този вариант:
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."
}
Това работи, но за мен ще отнеме цяла вечност, за да покрия всички случаи. Може да съдържа стотици случаи.
Така че въпросът ми е: Има ли по-лесен начин да направите това? Връща нула, ако не е налично, и разгръща, ако е.
Благодаря ти!