case error(Error) } RESULT TYPE! func fetchMountains(completion: (Result<[Mountain], Error>) -> Void) {} AND OTHER FUNDAMENTALS struct Mountain { let name: String let height: Measurement<UnitLength> }
isLoading: Bool { false } var mountains: [Mountain]? INTEGRATED enum State { case idle case loading case loaded([Mountain]) case failedLoading(LocalizedError) } var state = State.idle
A STRUCT struct ViewModel { let title: NSAttributedString } let attString = NSMutableAttributedString(string: "Hello") let viewModel = ViewModel(title: attString) // viewModel is passed by value attString.append(" stranger!”) // all viewModel „copies” are changed EXCEPTION: E.G. IMPLEMENTING COPY ON WRITE