♻️ Refactored CoreData access

This commit is contained in:
2021-02-10 20:26:53 +01:00
committed by Patrick Müller
parent f50ba8f19d
commit b689a7bbf1
10 changed files with 132 additions and 72 deletions
@@ -22,4 +22,23 @@ public class Lecturer: NSManagedObject {
return []
}
}
@nonobjc public class func getSpecified(sortDescriptors: [NSSortDescriptor] = [], searchPredicate: NSPredicate? = nil) -> [Lecturer]{
let managedContext =
PersistenceController.shared.context
let fetchRequest: NSFetchRequest = Lecturer.fetchRequest()
fetchRequest.sortDescriptors = sortDescriptors
if(searchPredicate != nil) {
fetchRequest.predicate = searchPredicate
}
do {
return try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
return []
}
}
}
@@ -22,4 +22,23 @@ public class RaPlaEvent: NSManagedObject {
return []
}
}
@nonobjc public class func getSpecified(sortDescriptors: [NSSortDescriptor] = [], searchPredicate: NSPredicate? = nil) -> [RaPlaEvent]{
let managedContext =
PersistenceController.shared.context
let fetchRequest: NSFetchRequest = RaPlaEvent.fetchRequest()
fetchRequest.sortDescriptors = sortDescriptors
if(searchPredicate != nil) {
fetchRequest.predicate = searchPredicate
}
do {
return try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
return []
}
}
}
@@ -22,4 +22,23 @@ public class User: NSManagedObject {
return []
}
}
@nonobjc public class func getSpecified(sortDescriptors: [NSSortDescriptor] = [], searchPredicate: NSPredicate? = nil) -> [User]{
let managedContext =
PersistenceController.shared.context
let fetchRequest: NSFetchRequest = User.fetchRequest()
fetchRequest.sortDescriptors = sortDescriptors
if(searchPredicate != nil) {
fetchRequest.predicate = searchPredicate
}
do {
return try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
return []
}
}
}
+33 -30
View File
@@ -65,39 +65,42 @@ struct PersistenceController {
let viewContext = result.container.viewContext
// set mock user
let userEntity = NSEntityDescription.entity(forEntityName: "User", in: PersistenceController.shared.context)!
let user = NSManagedObject(entity: userEntity, insertInto: PersistenceController.shared.context)
user.setValue("Max Mustermann", forKey: "name")
user.setValue("TINF19B4", forKey: "course")
user.setValue("Dr. Mustermann", forKey: "director")
let user = User(context: PersistenceController.shared.context)
user.name = "Max Mustermann"
user.course = "TINF19B4"
user.director = "Prof. Dr. Mustermann"
// Generate mock events
let eventEntity = NSEntityDescription.entity(forEntityName: "RaPlaEvent", in: PersistenceController.shared.context)!
let normalEvent1 = NSManagedObject(entity: eventEntity, insertInto: PersistenceController.shared.context)
let normalEvent2 = NSManagedObject(entity: eventEntity, insertInto: PersistenceController.shared.context)
let examEvent = NSManagedObject(entity: eventEntity, insertInto: PersistenceController.shared.context)
normalEvent1.setValue("Mock Event 1", forKey: "summary")
normalEvent2.setValue("Mock Event 2", forKey: "summary")
examEvent.setValue("Exam Event", forKey: "summary")
normalEvent1.setValue("Mock Event 1 Description", forKey: "descr")
normalEvent2.setValue("Mock Event 2 Description", forKey: "descr")
examEvent.setValue("Exam Event Description", forKey: "descr")
normalEvent1.setValue("E207 INF Hörsaal", forKey: "location")
normalEvent2.setValue("A306 WI Hörsaal", forKey: "location")
examEvent.setValue("Audimax A", forKey: "location")
normalEvent1.setValue("Lehrveranstaltung", forKey: "category")
normalEvent2.setValue("Lehrveranstaltung", forKey: "category")
examEvent.setValue("Prüfung", forKey: "category")
let normalEvent1 = RaPlaEvent(context: PersistenceController.shared.context)
let normalEvent2 = RaPlaEvent(context: PersistenceController.shared.context)
let examEvent = RaPlaEvent(context: PersistenceController.shared.context)
normalEvent1.summary = "Mock Event 1"
normalEvent2.summary = "Mock Event 2"
examEvent.summary = "Exam Event"
normalEvent1.descr = "Mock Event 1 description"
normalEvent2.descr = "Mock Event 2 description"
examEvent.descr = "Exam Event description"
normalEvent1.location = "E207 INF Hörsaal"
normalEvent2.location = "A306 WI Hörsaal"
examEvent.location = "Audimax A"
normalEvent1.category = "Lehrveranstaltung"
normalEvent2.category = "Lehrveranstaltung"
examEvent.category = "Prüfung"
var currentDate = Date()
currentDate.addTimeInterval(1*60*60);normalEvent1.setValue(currentDate, forKey: "startDate")
currentDate.addTimeInterval(1*60*60);normalEvent2.setValue(currentDate, forKey: "startDate")
currentDate.addTimeInterval(1*60*60);examEvent.setValue(currentDate, forKey: "startDate")
currentDate.addTimeInterval(1*60*60);normalEvent1.setValue(currentDate, forKey: "endDate")
currentDate.addTimeInterval(1*60*60);normalEvent2.setValue(currentDate, forKey: "endDate")
currentDate.addTimeInterval(1*60*60);examEvent.setValue(currentDate, forKey: "endDate")
normalEvent1.setValue("totalUniqueId1", forKey: "uid")
normalEvent2.setValue("totalUniqueId2", forKey: "uid")
examEvent.setValue("totalUniqueId3", forKey: "uid")
currentDate.addTimeInterval(1*60*60);normalEvent1.startDate = currentDate
currentDate.addTimeInterval(1*60*60);normalEvent2.startDate = currentDate
currentDate.addTimeInterval(1*60*60);examEvent.startDate = currentDate
currentDate.addTimeInterval(1*60*60);normalEvent1.endDate = currentDate
currentDate.addTimeInterval(1*60*60);normalEvent2.endDate = currentDate
currentDate.addTimeInterval(1*60*60);examEvent.endDate = currentDate
normalEvent1.uid = "totalUniqueId1"
normalEvent2.uid = "totalUniqueId2"
examEvent.uid = "totalUniqueId3"
do {