import Foundation import CoreData import SwiftUI @objc(Split) public class Split: NSManagedObject, Identifiable { @NSManaged public var name: String @NSManaged public var color: String @NSManaged public var systemImage: String @NSManaged public var order: Int32 @NSManaged public var exercises: NSSet? @NSManaged public var workouts: NSSet? public var id: NSManagedObjectID { objectID } static let unnamed = "Unnamed Split" } // MARK: - Convenience Accessors extension Split { var exercisesArray: [Exercise] { let set = exercises as? Set ?? [] return set.sorted { $0.order < $1.order } } var workoutsArray: [Workout] { let set = workouts as? Set ?? [] return set.sorted { $0.start > $1.start } } func addToExercises(_ exercise: Exercise) { let items = mutableSetValue(forKey: "exercises") items.add(exercise) } func removeFromExercises(_ exercise: Exercise) { let items = mutableSetValue(forKey: "exercises") items.remove(exercise) } func addToWorkouts(_ workout: Workout) { let items = mutableSetValue(forKey: "workouts") items.add(workout) } func removeFromWorkouts(_ workout: Workout) { let items = mutableSetValue(forKey: "workouts") items.remove(workout) } } // MARK: - Fetch Request extension Split { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "Split") } static func orderedFetchRequest() -> NSFetchRequest { let request = fetchRequest() request.sortDescriptors = [NSSortDescriptor(keyPath: \Split.order, ascending: true)] return request } }