そこに表示されるモデルを作成しました:http: //i.imagehost.org/0836/2009-11-08_14_37_41.png
サウンドカテゴリに関する情報と、各カテゴリのサンプルサウンドを保存したいと思います。カテゴリには、Name(NSString)とSoundsRelation(サウンドを表すNSDataのNSSet)があります。
ここに問題があります:例えば、私はそれに関連するいくつかの音を含むいくつかのカテゴリーを持っています。音の数を3と仮定します。
NSLog(@"description: \n%@", category);
名前とこれらの3つの音に関する情報が表示されます。このようなもの:
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をnilに設定したい。
そうです:
[category setValue:nil forKeyPath:@"SoundsRelation"];
今私がするなら
NSLog(@"description: \n%@", category);
私は次のようなものを持っています:
Name = "Cat1";
SoundsRelation = (
);
そうですね、Cat1にはサウンドが関連付けられていないようです。
[managedObjectContext save:]
次に、メソッドとQUITAPPを使用して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>
);
以前の音が見えます!
ここで、SoundsRelationを5つの他のサウンドを含む他のNSSetでオーバーライドすると、次のようになります。[category setValue:otherSetWithFiveSounds forKeyPath:@ "SoundsRelation"];
そして行う:NSLog(@ "description:\ n%@"、category);
わかります:Name = "Cat1"; SoundsRelation =(0x174e90、0x174ef0、0x174ab0、0x1743b0、0x1744b0);
保存して終了して再起動すると、カテゴリをNSLロギングした後、次のように表示されます。
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>
);
古い音と新しい音が表示されます。なんで?古い関係を新しい関係に完全にオーバーライドするにはどうすればよいですか?