1

我的 NSManagedObject 的属性之一取决于各种属性,其中一些在相关的 NSManagedObject 中。

在第一次运行中,我为此类属性实现了一个简单的瞬态属性,但我只是发现无法将 fetch 谓词与瞬态属性一起使用。

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

  1. 它的值是使用不同的属性计算的
  2. 依赖属性的 1 个存在于相关的 NSManagedObject 中
  3. 我可以使用这个属性作为谓词来获取。
  4. 如果我更新依赖属性之一,则必须更新计算值
4

1 回答 1

0

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

KVO 编程指南


编辑:参考这里

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

Apple 的示例非常好,它给出了一个fullName应该从firstNameand收集属性的情况lastName

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

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

这将允许您的应用在这些值被修改时收到通知。然后,您只需覆盖将在此通知上调用的 getter

- (NSString *)fullName 
{
    return [NSString stringWithFormat:@"%@ %@",firstName, lastName];
}
于 2012-07-19T17:57:45.250 回答