我有实体Route和RoutePoint(都是NSManagedObject的子类),它们之间存在多对多的关系:一个Route可以有更多的RoutePoints。 Route有一个称为坐标的(有序)关系,RoutePoint有一个叫做route的关系(设置为反向)。
我在记录时发现了这一点:
Relationship 'coordinates' fault on managed object (0xb666e80) <Route: 0xb666e80> ...
Route.h:
@property (nonatomic, retain) NSOrderedSet * coordinates;
RoutePoint.h:
@property (nonatomic, retain) Route * route;
似乎设置不正确,这样做的正确方法是什么?
修改
让我们稍微扩展一下这个数据库模型。我有一个名为ActivityData的实体,它可以有(所以可选)一个Route。我在ActivityData和Route之间建立了一对一的关系,我也将这种关系设置为反向关系。
这些代码行导致错误(无法识别的选择器发送到实例):
ActivityData *a = [dict objectForKey:@"data"];
NSLog(@"route dist: %@", a.route.distance);
然而,这可以正常工作:
ActivityData *a = [dict objectForKey:@"data"];
NSLog(@"act: %@", a);
NSLog(@"route dist: %@", a.route.distance);
很奇怪呃?