Managed through singletons and environment objects:
Copy
Ask AI
// Global student dataclass GlobalStudentDataState: ObservableObject { static let shared = GlobalStudentDataState() @Published var studentInfo: StudentInfo? @Published var hasCompletedOnboarding: Bool}// Usage in views@EnvironmentObject var globalState: GlobalStudentDataState
enum APIError: LocalizedError { case networkError case decodingError case unauthorized var errorDescription: String? { switch self { case .networkError: return "Network connection error" case .decodingError: return "Data format error" case .unauthorized: return "Please log in again" } }}