我已经创建了模型,您可以在其中看到:
http://i.imagehost.org/0836/2009-11-08_14_37_41.png
我想为每个类别存储关于声音类别和一些示例声音的信息。
类别有名称(nsstring)和声音相关性(nsset of 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>
);
然后我想清除这类声音。我想把音效设定为零。
我愿意:
[category setValue:nil forKeyPath:@"SoundsRelation"];
现在如果我这样做
nslog(@“描述:\n%@”,类别);
我会有一些像:
Name = "Cat1";
SoundsRelation = (
);
嗯,看来1类没有与之相关的声音。
现在,我使用保存ManagedObjectContext
[managedObjectContext save:]
方法及
退出应用程序
.
当我重新启动应用程序时
nslog(@“描述:\n%@”,类别);
我将拥有:
Name=“CAT1”;
声音相关性=(
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覆盖声音相关性:
[类别设置值:OtherSetWithFivesounds ForkeyPath:@“SoundsRelation”];
做:
nslog(@“描述:\n%@”,类别);
我懂了:
name=“1类”;
声音相关性=(
0x174E90,
0x174EF0,
0x174ab0,
0x1743b0,
0x17440B0
;
现在,如果我保存、退出并重新启动,则在登录类别后,我会看到:
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>
);
我看到旧的声音+新的声音!
为什么?我该怎么做才能完全将旧关系凌驾于新关系之上?