Given this distinction, what behavior do we want for our daily event? If we change the name of our event, should we expect anything that has a reference to it to also see that change? That sounds like the behavior we want, so our daily event should be a reference type:
class DailyEvent {
var name: String
init(name: String) {
self.name = name
}
}
Let's check that this gives us the behavior we expect:
var event1 = DailyEvent(name: "have bath")
var event2 = event1
print("Event 1 - \(event1.name)") // have bath
print("Event 2 - \(event2.name)") // have bath
event1.name = "have shower"
print("Event 1 - \(event1.name)") // have shower
print("Event 2 - \(event2.name)") // have shower
We want to be reminded of our event every day at a certain time, but for our purpose, Date in Foundation is a bit of an overkill, since it contains both date and time information, and we only need to maintain time information...