Базовые данные делят два значения - PullRequest
0 голосов
/ 24 апреля 2011

В моем проекте, который полностью написан с использованием Core Data и привязок, у меня есть два текстовых поля, которые содержат значения с плавающей запятой.Я хочу сделать третье текстовое поле, которое является первым полем, разделенным на второе.Каков наилучший способ сделать это с помощью Core Data?Должен ли я сделать собственный метод доступа для третьего поля?

1 Ответ

2 голосов
/ 24 апреля 2011

Создайте метод -thirdValue в вашем подклассе NSManagedObject, который выполняет вычисления:

- (CGFloat)thirdValue
{
  return value1 / value2; // should probably do a value2 != 0 check
}

, а затем + keyPathsForValuesAffectingValueForKey для класса:

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
{   
    NSSet *superSet = [super keyPathsForValuesAffectingValueForKey:key];

    if ([key isEqualToString:@"thirdValue"])
        return [[NSMutableSet setWithObjects:@"value1", @"value2", nil] unionSet:superSet];

    return superSet;
}

это устанавливает третье значение как зависимоепо значению1 и значению2.Всякий раз, когда значение1 или значение2 изменятся, также будет уведомление KVO для третьего значения.Так что, если у вас есть поле, которое привязывается к нему, поле будет отображать новое вычисленное значение.Это удобный трюк, когда вам нужно отобразить клавишу, значение которой зависит от других клавиш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...