Итак, у меня есть собственный класс под названием «Issue», в котором у меня есть несколько атрибутов с несколькими типами данных, и я хочу сохранить их в базовых данных. Я создал новую сущность в CoreData «Проблемы» с одним атрибутом «проблема», который является трансформируемым - пользовательский класс, который я установил в качестве своего класса «Проблема».
Я также добавил
@objc(Issue)
class Issue: NSManagedObject { ... }
Итак, здесь я работаю с CoreData в другом классе:
func saveIssueTest() {
let managedContext = AppDelegate().persistentContainer.viewContext
guard let entity = NSEntityDescription.entity(forEntityName: "Issues", in: managedContext) else {
return
}
let issue = NSManagedObject(entity: entity, insertInto: managedContext) as! Issue
issue.setIssueDescription(_issueDescription: "Test")
do {
try managedContext.save()
print("SAVED")
} catch let error as NSError {
print(error.localizedDescription)
}
fetchIssueTest()
}
func fetchIssueTest() {
let managedContext = AppDelegate().persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Issues")
do {
let managedObjects = try managedContext.fetch(fetchRequest)
if let first = managedObjects.first as? Issue {
print(first)
}
print(managedObjects)
} catch let error as NSError {
print(error.localizedDescription)
}
}
Я могу сохранить его без ошибки, но при получении его - я получаю объект обратно, но каждое поле имеет значение nil, и когда я, например, хочу получить доступ к «IssueDescription» для «first», происходит сбой, потому что я развернул nil по желанию.
'first' выглядит так:
[<Issue: 0x6000005104d0> (entity: Issues; id: 0xe14b2223f0979a93 <x-coredata://47695D67-42A2-4922-83B8-34453E6DE104/Issues/p1> ; data: <fault>)]
Кто-нибудь знает, что я могу сделать не так? Извините, я никогда не использовал CoreData без моделирования атрибутов в модели и использования 'setValue (...).