我创建了您可以在那里看到的模型:http: //i.imagehost.org/0836/2009-11-08_14_37_41.png
我想存储有关声音类别的信息以及每个类别的一些示例声音。Category 有 Name(NSString)和 SoundsRelation(NSData 的 NSSet,代表声音)。
这是问题所在:例如,我有一些类别,其中包含与之相关的几种声音。假设声音的数量是 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 设置为零。
我愿意:
[category setValue:nil forKeyPath:@"SoundsRelation"];
现在如果我这样做
NSLog(@"description: \n%@", category);
我会有类似的东西:
Name = "Cat1";
SoundsRelation = (
);
好吧,Cat1 似乎没有与之相关的声音。
[managedObjectContext save:]
现在我使用方法和QUIT APP保存我的 managedObjectContext 。
当我重新启动我的应用程序并执行
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>
);
我看到了我以前的声音!
现在,如果我用包含 5 个其他声音的其他 NSSet 覆盖 SoundsRelation:[category setValue:otherSetWithFiveSounds forKeyPath:@"SoundsRelation"];
然后做: NSLog(@"description: \n%@", category);
我看到:名称=“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>
);
我看到了旧声音 + 新声音!为什么?我应该怎么做才能完全覆盖旧关系到新关系?