Установка повторного значения для атрибута путем подсчета связанных элементов в Базовых данных - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь установить в качестве значения атрибута автоматически повторяемое число на основе отношения «один к одному». У меня есть объект с именем «Encounter», который имеет отношение «ко многим» к «Round», и мне нужен атрибут, чтобы просто перейти к следующему значению и отразить количество раундов, в настоящее время связанных с объектом Encounter. У меня есть соответствующая модель данных, табличные представления и контроллеры массива, связанные и настроенные в конструкторе интерфейсов, и все они работают нормально. Но когда я пытаюсь ссылаться на свойство встречи из моего подкласса 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 голосов
/ 09 июня 2011

Я нашел решение, которое, кажется, работает хорошо. По сути, я вложил в класс NSArrayController и переопределил метод addObject, чтобы он выглядел примерно так: «Round» - это имя подкласса NSManagedObject:

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