Делает правильно.Если вы возьмете основной объект данных и измените его, он сразу отразит, сохраните ли вы его или нет.Сохраняющая часть гарантирует, что если вы выйдете из приложения и вернетесь, данные также будут сохранены.
Так что для вашей ситуации я бы не стал изменять реальный объект базовых данных.Скорее создайте структуру, которая имитирует основной объект данных, и измените эту структуру.
Пример, скажем, мой объект coredata - это Person с атрибутами name и age.
Объект, получаемый из выборки, - скажемperson1.
У вас есть класс PersonSub с такими же атрибутами.
Теперь вы можете создать
PersonSub *personSub = [[PersonSub alloc] init]; //You can create a custom init to initilize from Person core data if you like.
personSub.name = person1.name;
personSub.age = person1.age;
Теперь вы можете изменить его следующим образом
personSub.age = personSub.age + 1;