我正在尝试熟悉 Core Data 并让 Xcode 为我创建 NSManagedObject 的子类。一个是 AddressAnnotation,它只包含一些关于位置的信息,如街道、邮编、地址等。另一个是:
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];
我 NSLogged Map 对象和地址对象,两者都有值。当我尝试将对象添加到现有的 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: 时,这是有效的,但我认为在我习惯之后这会更直观。谢谢!