Как сохранить данные свойств объекта после сохранения его в основных данных - PullRequest
0 голосов
/ 20 сентября 2018

Я создаю сущность UserEntity:

    let userEntity = UserEntity(context: managedContext)

    userEntity.username = user.username
    userEntity.name = user.name
    userEntity.personCode = user.personCode
    userEntity.personalData = XMLRegistrationData.toEntity(userPersonalData: user.registrations.registrationData)

и сохраняю ее в этом свойстве "loggedUser":

            let loggedUser = XMLUserData.toEntity(user: xmlUserData)
            print(loggedUser) // first print

            do {
                try self.context.save()

                print(loggedUser) // second print
            } catch {
                ...
            }

Первые результаты печати этого:

<UserEntity: 0x282b07a70> (entity: UserEntity; id: 0x28081c460 <x-coredata:///UserEntity/t78B51567-8104-4232-9BEA-062FBCB3CEEC3> ; data: {
    activeSession = nil;
    name = "FOO";
    personCode = 000;
    personalData = "0x280828020 <x-coredata:///UserPersonalDataEntity/t78B51567-8104-4232-9BEA-062FBCB3CEEC4>";
    username = 001;
})

Но второй результат печати на этом:

<UserEntity: 0x282b07a70> (entity: UserEntity; id: 0xd000000000840002 <x-coredata://C833ECD4-5D54-48C3-9860-B2E0781D08EC/UserEntity/p33> ; data: <fault>)

Атрибуты UserEntity равны нулю после сохранения его в основных данных.Объект сохраняется в основных данных, я могу получить его с помощью context.fetch, но loggedUser изменился.

Почему это происходит?И как я могу сохранить данные в loggedUser после их сохранения, без необходимости извлекать их из основных данных после сохранения?

1 Ответ

0 голосов
/ 20 сентября 2018

Это не nil, это fault.Данные все еще там.Вы можете доказать это, напечатав loggedUser.username

Ошибка - уменьшает использование памяти приложением, сохраняя объекты-заполнители (ошибки) в постоянном хранилище.

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