У меня проблема с тем, что CoreData не может выполнить ошибку на объекте. Я предполагаю, что это потому, что объект был удален, и теперь CoreData пытается получить доступ к свойству в некотором контексте и не может вызвать его ошибку. Чтобы решить эту проблему, я попытался вызвать setRelationshipKeyPathsForPrefetching
и передать ему отношения, которые я хочу предварительно выбрать .
Например, у меня есть объект A, и он имеет отношение «многие» к объекту B, но в какой-то момент, когда я обращаюсь к свойствам объекта B, объект B удаляется в другом контексте, и теперь ошибка может не будет выполнено.
[request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"listOfBs", nil]];
Я подумал, что если бы я это сделал, он бы предварительно выбрал объект B, чтобы я мог безопасно вызывать его свойства, но, похоже, это не так.
РЕДАКТИРОВАТЬ: Я не могу найти информацию об этом, но это должно быть довольно распространенная проблема. Если в каком-то контексте есть управляемый объект, который удален в другом контексте, у него должен быть какой-то способ безопасно определить, что объект больше не существует, а не просто сбой
РЕДАКТИРОВАТЬ 2: Я не думаю, что CoreData правильно подтверждает мой запрос на предварительную выборку. Если я вызываю setRelationshipKeyPathsForPrefetching, то возвращаемые объекты должны быть повреждены, но даже в том случае, когда у меня нет ошибки, я могу просто распечатать возвращаемый объект и увидеть, что он неисправен. Разве CoreData не выполняет предварительную выборку объектов во многих отношениях?
РЕДАКТИРОВАТЬ 3: Хорошо, возможно, сами отношения предварительно выбраны, но свойства предварительно выбранных элементов не нарушены. Поэтому, если у меня есть объект A, и я хочу предварительно выбрать все B, связанные с A, я использую setRelationshipKeyPathsForPrefetching, но все свойства B не нарушены.