У меня есть проект CoreData, где есть два связанных объекта (Пользователи и исследования), эти сущности имеют отношение «один ко многим» к другому объекту (UserStudy), который имеет одно- к одному для каждого из первых двух объектов и некоторые дополнительные атрибуты.CoreData - одна сторона отношений всегда равна нулю
У меня очень странная проблема. Я могу добавить UserStudy в коллекции для пользователей и исследований, но другая сторона отношения никогда не работает. Каждый раз, когда я его устанавливаю, я не получаю никаких ошибок, и отношения просто нулевые.
- Я уже создал тестовый проект, используя одинаковый код, он работает там по какой-то причине, но не в моем году старого проекте (большой кодовый я не могу просто мусор)
- Я уже очищенный
- Я уже удалил производные данные
- Я попытался установить отношения, используя точечный аксессуар, настройщик удобства и используя setValue: ForKey.
- Я проверил, что все обратные отношения правильно установлены.
- Я проверил, что отношения являются «один ко многим» на сторонах «Пользователь» и «Исследование», и «один к одному» на стороне UserStudy.
код, где я пытаюсь установить отношения выглядит следующим образом:
CRMUser *aUser = [NSEntityDescription insertNewObjectForEntityForName:@"CRMUser"
inManagedObjectContext:self.ctx];
CRMStudy *aStudy = [NSEntityDescription insertNewObjectForEntityForName:@"CRMStudy"
inManagedObjectContext:self.ctx];
CRMUserStudy *aUserStudy = [NSEntityDescription insertNewObjectForEntityForName:@"CRMUserStudy"
inManagedObjectContext:self.ctx];
aUserStudy.study = aStudy;
aUserStudy.user = aUser;
STAssertTrue([aUserStudy.user isEqual:aUser], @"newUserStudyWithUser:study:token failed to set user");
STAssertTrue([aUserStudy.study isEqual:aStudy], @"newUserStudyWithUser:study:token failed to set study");
NSLog(@"aUserStudy: %@",aUserStudy);
Который всегда терпит неудачу, и дает мне этот журнал:
aUserStudy: <CRMUserStudy: 0xa6db8e0> (entity: CRMUserStudy; id: 0xa6dc580 <x-coredata:///CRMUserStudy/t1BDB3E8A-F5F0-4462-AB88-C5186AC4D8C671> ; data: {
study = nil;
token = nil;
user = nil;
})
Но если я:
CRMUser *aUser = [NSEntityDescription insertNewObjectForEntityForName:@"CRMUser"
inManagedObjectContext:self.ctx];
CRMStudy *aStudy = [NSEntityDescription insertNewObjectForEntityForName:@"CRMStudy"
inManagedObjectContext:self.ctx];
CRMUserStudy *aUserStudy = [NSEntityDescription insertNewObjectForEntityForName:@"CRMUserStudy"
inManagedObjectContext:self.ctx];
[aUser addUserStudyObject:aUserStudy];
[aStudy addUserStudyObject:aUserStudy];
Отношения установлены, но все еще ноль с другой стороны.
Как я уже сказал, я могу скопировать код моей модели в новый проект, и все работает нормально. Кто-нибудь когда-либо испытывал это? Может быть, это как-то связано с тестовой целью?
Есть ли у вас какие-либо миграции в этом проекте?Если вы уверены, что миграция, которая имеет правильные отношения, установлена как текущая версия модели –
никаких миграций, это приложение не увидело выпуск продукта, поэтому мы просто удаляем установку при смене модели. –
Вы проверяете обратную связь? От изучения до пользователя? – brianLikeApple