Post

Replies

Boosts

Views

Activity

Reply to function with automatically increasing percentage (watchOS)
If I had to guess, I would say somerewehre right there's the mistake or something's missing: ] let maxECTSPerSection: [CourseCategory: Int] = [ .firstSection: 44, .secondSection: 172, .freeStudy: 24 ] init() { loadCourses() } var progress: Double { let completedECTS = courses.filter { $0.isCompleted }.reduce(0) { $0 + $1.ects } let totalECTS = 240 // Gesamtwert für ECTS im Studium return (Double(completedECTS) / Double(totalECTS)) * 100 } func toggleCourseCompleted(courseID: String) { if let index = courses.firstIndex(where: { $0.id == courseID }) { courses[index].isCompleted.toggle() saveCourses() } } private func completedECTS(for category: CourseCategory) -> Int { let completedECTSAsDouble = courses.filter { $0.category == category && $0.isCompleted }.reduce(0.0) { $0 + $1.ects } return Int(completedECTSAsDouble) } } // Extension außerhalb der Klassendefinition extension StudyProgressViewModel { func saveCourses() { do { let encodedCourses = try JSONEncoder().encode(courses) UserDefaults.standard.set(encodedCourses, forKey: "savedCourses") } catch { print("Fehler beim Speichern der Kurse: \(error)") } } func loadCourses() { guard let savedCoursesData = UserDefaults.standard.data(forKey: "savedCourses") else { return } do { let decodedCourses = try JSONDecoder().decode([Course].self, from: savedCoursesData) DispatchQueue.main.async { self.courses = decodedCourses } } catch { print("Fehler beim Laden der Kurse: \(error)") } } } extension StudyProgressViewModel { // Ihre neue Funktion... func updateFreeStudyECTS(selectedCourses: Set<String>) { let selectedCoursesECTS = courses.filter { selectedCourses.contains($0.name) && $0.category == .freeStudy } .reduce(0.0) { $0 + $1.ects } print("Aktualisiere Free Study ECTS für ausgewählte Kurse: \(selectedCourses)") if selectedCoursesECTS <= Double(maxECTSPerSection[.freeStudy] ?? 24) { for course in courses where selectedCourses.contains(course.name) && course.category == .freeStudy { if !course.isCompleted { toggleCourseCompleted(courseID: course.id) } } } else { print("Die Gesamtanzahl der ECTS für freie Studienleistungen darf 24 nicht überschreiten.") } } } extension StudyProgressViewModel { func isCourseCompleted(courseName: String) -> Bool { return courses.first { $0.name == courseName }?.isCompleted ?? false } func toggleCourseCompletedByName(courseName: String) { print("Looking for course: \(courseName)") print("Available courses: \(courses.map { $0.name })") if let index = courses.firstIndex(where: { $0.name == courseName }) { print("Course found: \(courseName), toggling completion") toggleCourseCompleted(courseID: courses[index].id) } else { print("Course not found: \(courseName)") } } } Maybe somewhere in the extension, but not sure..
Topic: Programming Languages SubTopic: Swift Tags:
Apr ’24
Reply to function with automatically increasing percentage (watchOS)
maybe my friend, but since this is my first ever project, it's not as easy for me as it is for you to get some evidence what the problem could be :)
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
Apr ’24
Reply to function with automatically increasing percentage (watchOS)
If I had to guess, I would say somerewehre right there's the mistake or something's missing: ] let maxECTSPerSection: [CourseCategory: Int] = [ .firstSection: 44, .secondSection: 172, .freeStudy: 24 ] init() { loadCourses() } var progress: Double { let completedECTS = courses.filter { $0.isCompleted }.reduce(0) { $0 + $1.ects } let totalECTS = 240 // Gesamtwert für ECTS im Studium return (Double(completedECTS) / Double(totalECTS)) * 100 } func toggleCourseCompleted(courseID: String) { if let index = courses.firstIndex(where: { $0.id == courseID }) { courses[index].isCompleted.toggle() saveCourses() } } private func completedECTS(for category: CourseCategory) -> Int { let completedECTSAsDouble = courses.filter { $0.category == category && $0.isCompleted }.reduce(0.0) { $0 + $1.ects } return Int(completedECTSAsDouble) } } // Extension außerhalb der Klassendefinition extension StudyProgressViewModel { func saveCourses() { do { let encodedCourses = try JSONEncoder().encode(courses) UserDefaults.standard.set(encodedCourses, forKey: "savedCourses") } catch { print("Fehler beim Speichern der Kurse: \(error)") } } func loadCourses() { guard let savedCoursesData = UserDefaults.standard.data(forKey: "savedCourses") else { return } do { let decodedCourses = try JSONDecoder().decode([Course].self, from: savedCoursesData) DispatchQueue.main.async { self.courses = decodedCourses } } catch { print("Fehler beim Laden der Kurse: \(error)") } } } extension StudyProgressViewModel { // Ihre neue Funktion... func updateFreeStudyECTS(selectedCourses: Set<String>) { let selectedCoursesECTS = courses.filter { selectedCourses.contains($0.name) && $0.category == .freeStudy } .reduce(0.0) { $0 + $1.ects } print("Aktualisiere Free Study ECTS für ausgewählte Kurse: \(selectedCourses)") if selectedCoursesECTS <= Double(maxECTSPerSection[.freeStudy] ?? 24) { for course in courses where selectedCourses.contains(course.name) && course.category == .freeStudy { if !course.isCompleted { toggleCourseCompleted(courseID: course.id) } } } else { print("Die Gesamtanzahl der ECTS für freie Studienleistungen darf 24 nicht überschreiten.") } } } extension StudyProgressViewModel { func isCourseCompleted(courseName: String) -> Bool { return courses.first { $0.name == courseName }?.isCompleted ?? false } func toggleCourseCompletedByName(courseName: String) { print("Looking for course: \(courseName)") print("Available courses: \(courses.map { $0.name })") if let index = courses.firstIndex(where: { $0.name == courseName }) { print("Course found: \(courseName), toggling completion") toggleCourseCompleted(courseID: courses[index].id) } else { print("Course not found: \(courseName)") } } } Maybe somewhere in the extension, but not sure..
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
Apr ’24