来自多个实体的从属属性

时间:2012-07-19 17:36:46

标签: objective-c core-data

我的一个NSManagedObject属性依赖于各种属性,其中一些属于相关的NSManagedObject。

在第一次运行中,我为这样的属性实现了一个简单的瞬态属性,但我发现不可能将fetch谓词与瞬态属性一起使用。

我需要创建一个属性,以便:

  1. 使用不同的属性计算其值
  2. 1依赖属性存在于相关的NSManagedObject
  3. 我可以使用此属性作为谓词进行提取。
  4. 如果我更新其中一个从属属性,则必须更新计算值

1 个答案:

答案 0 :(得分:0)

您可以使用键值观察来监视正在更改的属性,以使某些计算属性保持最新。您可以将观察者添加到要监视的属性。

KVO Programming Guide


修改:参考here

要正确执行此操作,您需要覆盖计算属性的属性getter,并创建keyPathsFOrValuesAffecting<Key>函数。

Apple的例子非常好,它提供了一个案例,应该从fullNamefirstName收集lastName属性。

所以你需要用这个函数实现KVO:

+ (NSSet *)keyPathsForValuesAffectingFullName
{
    return [NSSet setWithObjects:@"lastName", @"firstName", nil];
}

这将允许您的应用在任何时候修改这些值时得到通知。然后你只需覆盖将在此通知中调用的getter

- (NSString *)fullName 
{
    return [NSString stringWithFormat:@"%@ %@",firstName, lastName];
}