Я хочу достичь простых вещей, но я просто думаю, что упустил некоторый момент, как функционирует coreData. Поэтому я создал функцию createSession, задачей которой является создание сессии, с некоторыми упражнениями. Упражнение должно иметь возможность подключаться к нескольким сеансам и наоборот. Итак, я сделал следующую модель данных: ![enter image description here](https://i.stack.imgur.com/9xVO6.png)
Отсюда я пошел в сделанный ExerciseMO и SessionMO:
class SessionMO: NSManagedObject {
@NSManaged var name: String?
@NSManaged var exercises: NSSet
}
и
class ExerciseMO: NSManagedObject {
@NSManaged var name: String
@NSManaged var mainMuscle: Int
@NSManaged var difficulty: Bool
@NSManaged var session: SessionMO
}
Мои функции сохранения:
func createSession(name: String, exercisesConnect: [ExerciseMO]){
var newExercises: NSSet = []
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
for exercise in exercisesConnect {
let newExercise = exercise as ExerciseMO
let session = NSEntityDescription.insertNewObject(forEntityName: "Sessions", into: managedContext) as! SessionMO
session.name = name
newExercise.sessions?.adding(session)
print("\(newExercise.name!) is saved under session named: \(session.name!)")
}
do {
try! managedContext.save()
print("Session '\(name)' is saved successfully.")
}
}
и это работает, или idk, если это работает. Потому что, когда я пытаюсь получить сессию и подключить упражнения, это всегда возвращает мне 0.
Моя функция выборки:
func findSession(name: String) {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let sessionEntity = NSEntityDescription.entity(forEntityName: "Sessions", in: managedContext)!
let sessionFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Sessions")
sessionFetch.fetchLimit = 1
sessionFetch.predicate = NSPredicate(format: "name = %@", name)
print("Here 1.")
do {
print("Here 2.")
let sessions = try! managedContext.fetch(sessionFetch)
print("Here 3.")
for session in sessions as! [SessionMO] {
print("Here 4.")
print(session.name!)
if let exercises = session.exercises {
print("Here 5.")
print(exercises.count)
}
}
}
}
И пример распечатки:
Сохранение отпечатков:
- Løb сохраняется в сеансе с именем:Mandag
- Bænnkpres сохранен в сеансе с именем: Mandag
- Сессия 'Mandag' успешно сохранена.
Получение отпечатков:
- Здесь 1.
- Здесь 2.
- Здесь 3.
- Здесь 4.
- Мандаг
- Здесь 5.
- 0
Так что, если кто-то может указать мне каким-либо образом или чем-нибудь полезным, это будет высоко оценено. Спасибо!