Сохранения в CoreData


#1

Есть entity в CoreData, допустим Missions
Внутри Missions есть атрибуты: Name, Image, Text, Subjects. С первыми тремя аттрибутами более менее все понятно. Но параметр Subject мне надо сохранить в виде словарей: “Key, Value”, а значит завожу его как “Transformable”, но не пойму как в нем сохранять данные? Я так понял что не могу присвоить значения просто написав Missions.Subject = n


#2

Создайте подкласс NSManagedObject и укажите что вам нужен словарь (Transformable может быть любой класс соответсвующий протоколу NSCoding)

class Mission: NSManagedObject {
    static func fetchRequest() -> NSFetchRequest<Mission> {
        return NSFetchRequest<Mission>(entityName: "Mission")
    }
    @NSManaged var name: String?
    @NSManaged var subjects: [String: Any]?
}
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

let mission = Mission(context: context)
if mission.subjects == nil {
    mission.subjects = [:]
}
mission.subjects!["hello"] = 1000

try? context.save()

let request: NSFetchRequest<Mission> = Mission.fetchRequest()
let result = try! context.fetch(request)
result.forEach {
    print($0.subjects?["hello"])
}

#3

Спасибо за такой подробный ответ - но извините, это мне не помогло, а только запутало, пока недостаточно опыта. Не понятно как Ваш код вставить в мой. В другой ветке я задавал похожий вопрос, вы посоветовали что лучше создать три сущности и связать между собой - наверное все-таки правильней так и сделать, я там вам описал более подробно свою проблему, прошу глянуть, вот ссылка