Использовать существующий пользовательский класс в Core Data - PullRequest
0 голосов
/ 07 июня 2019

Итак, у меня есть собственный класс под названием «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 (...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...