私は Core Data に慣れようとしており、Xcode に NSManagedObject のサブクラスを作成してもらいました。1 つは AddressAnnotation で、番地、郵便番号、住所などの場所に関する情報が含まれています。もう 1 つは次のとおりです。
Map : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *locations;
- (void)addLocationsObject:(AddressAnnotation *)value;
- (void)removeLocationsObject:(AddressAnnotation *)value;
- (void)addLocations:(NSSet *)values;
- (void)removeLocations:(NSSet *)values;
地図に場所を追加したいときは、次のようにします。
- (void)insertLocationIntoMap:(Map *)map {
[map addLocationsObject:self.address];
Map オブジェクトとアドレス オブジェクトを NSLogged したところ、両方に値が含まれています。オブジェクトを既存の Map オブジェクトに追加しようとすると、追加されないようです。ログに記録されたそのマップの出力は次のとおりです。
<Map: 0x7087480> (entity: Map; id: 0x7084ff0 <x-coredata://8D6D7849-E7EC-48A3-BA95-C082D09E5D6D/Map/p1> ; data: {
locations = "<relationship fault: 0x768e4e0 'locations'>";
name = asdf;
})
新しいマップを作成してから insertLocationIntoMap: を呼び出すと、AddressAnnotation オブジェクトが追加されます。ログに記録されたそのマップは次のとおりです。
<Map: 0x767dee0> (entity: Map; id: 0x767d2d0 <x-coredata://8D6D7849-E7EC-48A3-BA95-C082D09E5D6D/Map/p5> ; data: {
locations = (
);
name = asdfasdf;
})
Maps オブジェクトに AddressAnnotation を追加する際に何か問題がありますか? これは、私が NSManagedObject のサブクラスを使用せず、 setValue:forKey: をどこでも使用していたときに機能していましたが、慣れるとより直感的になると思いました。ありがとう!