Я создал модель, которую вы можете увидеть здесь: http://i.imagehost.org/0836/2009-11-08_14_37_41.png
Я хочу сохранить информацию о категориях звуков и несколько примеров звуков для каждой категории. Категория имеет Имя (NSString) и SoundsRelation (NSSet из NSData, который представляет звуки).
Вот проблема: например, у меня есть категория, которая содержит несколько связанных с ней звуков. Предположим, что количество звуков равно 3. Итак, если я это сделаю
NSLog(@"description: \n%@", category);
Я увижу информацию о названии и этих трех звуках. Что-то вроде этого:
Name = "Cat1";
SoundsRelation = (
0x174e90 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p9>,
0x174ea0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p10>,
0x174eb0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p11>
);
Затем я хочу очистить эту категорию звуков. Я хочу установить SoundsRelation равным нулю.
I do:
[category setValue:nil forKeyPath:@"SoundsRelation"];
Теперь, если я сделаю
NSLog(@"description: \n%@", category);
У меня будет что-то вроде:
Name = "Cat1";
SoundsRelation = (
);
Что ж, похоже, что Cat1 не имеет связанных звуков.
Теперь я сохраняю свой managedObjectContext с помощью метода [managedObjectContext save:]
и ВЫЙТИ ИЗ ПРИЛОЖЕНИЯ.
Когда я перезагружаю свое приложение и делаю
NSLog(@"description: \n%@", category);
У меня будет:
Name = "Cat1";
SoundsRelation = (
0x174e90 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p9>,
0x174ea0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p10>,
0x174eb0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p11>
);
Я вижу свои предыдущие звуки!
Теперь, если я переопределю SoundsRelation с другим NSSet, который содержит 5 ДРУГИХ звуков: [category setValue: otherSetWithFiveSounds forKeyPath: @ "SoundsRelation"];
И делаем: NSLog (@ "description: \ n% @", category);
Я вижу: Name = "Cat1"; SoundsRelation = (0x174e90, 0x174ef0, 0x174ab0, 0x1743b0, 0x1744b0);
Теперь, если я сохраню, выйду и перезапущу, после NSLogging моей категории я вижу:
Name = "Cat1";
SoundsRelation = (
0x174e90 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p9>,
0x174ea0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p10>,
0x174eb0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p11>,
0x174e90 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p12>,
0x174ef0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p13>,
0x174ab0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p14>,
0x1743b0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p15>,
0x1744b0 <x-coredata://2E783972-3772-4CCA-9676-1D5F732D1FD2/Sounds/p16>
);
Я вижу СТАРЫЕ ЗВУКИ + НОВЫЕ ЗВУКИ! Почему? Что мне делать, чтобы полностью заменить СТАРЫЕ отношения на НОВЫЕ отношения?