通过计算Core Data中的相关项来设置属性的迭代值

时间:2011-06-07 23:32:19

标签: objective-c core-data iterator nsmanagedobject

我正在尝试根据一对一关系将属性值设置为自动迭代的数字。我有一个名为“Encounter”的实体,它与“Round”有很多关系,我需要该属性简单地迭代到下一个值并反映当前与Encounter实体相关的轮数。我在接口构建器中绑定和设置了相应的数据模型,tabel视图和数组控制器,它们都可以正常工作。但是当我尝试从我的Round子类NSManagedObject引用遭遇属性时,我得到了null。

例如:

- (void) awakeFromInsert{
    [super awakeFromInsert];    
    Encounter *enc = [self encounter];
    NSUInteger roundCount = [[enc rounds]count];
    [self setValue:[NSNumber numberWithUnsignedInteger:roundCount] forKey:@"roundNumber"];
    }

我还尝试创建一个在托管对象上下文上执行获取请求的方法,但我还没想出如何编写只拉取相关记录的谓词。我确信这很简单,我很遗憾,我很感激你的帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一个似乎运作良好的解决方案。基本上,我将NSArrayController子类化并覆盖了addObject方法,看起来如下所示,其中“Round”是NSManagedObject子类的名称:

-(id)newObject{
    Round *round = (Round *)[super newObject];
    round.roundNumber = [NSNumber numberWithUnsignedInteger:[[self arrangedObjects]count]+1];
    return round;
}