【发布时间】:2012-02-19 14:52:55
【问题描述】:
我有 2 个自动生成的实体:
@interface ContactEntity : Entity
@property (nonatomic, retain) NSString *caption;
@property (nonatomic, retain) NSString *image;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *text;
@property (nonatomic, retain) NSSet *pointLink;
@end
@interface PointEntity : Entity
@property (nonatomic, retain) NSNumber *latitude;
@property (nonatomic, retain) NSNumber *longitude;
@property (nonatomic, retain) NSSet *entityLink;
@property (nonatomic, retain) EntityEntity *entityTypeLink;
@end
它们以ManyToMany的形式相互联系,即一个联系人有很多点,一个点里面有很多联系人。
然后我得到第一个实体:
ContactModel *contact = [[[ContactModel alloc] init] autorelease];
// this is FetchRequest, returns array of all entities
self.items = [contact list:contact];
// i get only one, all is OK here, this entity has related PointEntity in DB
ContactEntity *contactEntity = [self.items objectAtIndex:self.selection];
当我尝试在选定的 ContactEntity 中使用 NSSet 获取相关的 PointEntity 时,我总是得到 NULL 或空数组。这两个都不起作用:
NSArray *points = [contactEntity.pointLink allObjects];
PointEntity *pointEntity = [contactEntity.pointLink anyObject];
NSInteger x1 = [points count]; // always 0
id x2 = pointEntity.latitude; // always 0
for (PointEntity *x in contactEntity.pointLink) // isn't enumerated because count = 0
{
id x3 = x.latitude;
}
感谢任何想法。我错过了什么吗,也许我需要使用 NSPredicate 从 PointEntity 中选择与 ContactEntity 相关的实体?
谢谢。
附:我的问题与此类似,但该建议对我不起作用,我无法使用主实体的 NSSet 加载关联实体:( CoreData: many-to-many relationship
【问题讨论】: