我的 NSManagedObject 的属性之一取决于各种属性,其中一些在相关的 NSManagedObject 中。
在第一次运行中,我为此类属性实现了一个简单的瞬态属性,但我只是发现无法将 fetch 谓词与瞬态属性一起使用。
我需要创建一个属性,以便:
- 它的值是使用不同的属性计算的
- 依赖属性的 1 个存在于相关的 NSManagedObject 中
- 我可以使用这个属性作为谓词来获取。
- 如果我更新依赖属性之一,则必须更新计算值
我的 NSManagedObject 的属性之一取决于各种属性,其中一些在相关的 NSManagedObject 中。
在第一次运行中,我为此类属性实现了一个简单的瞬态属性,但我只是发现无法将 fetch 谓词与瞬态属性一起使用。
我需要创建一个属性,以便:
您可以使用键值观察来监视正在更改的属性,以使某些计算的属性保持最新。您可以将观察者添加到要监视的属性。
编辑:参考这里
要正确执行此操作,您需要覆盖计算属性的属性 getter,并创建一个keyPathsFOrValuesAffecting<Key>
函数。
Apple 的示例非常好,它给出了一个fullName
应该从firstName
and收集属性的情况lastName
。
所以你需要用这个函数来实现 KVO:
+ (NSSet *)keyPathsForValuesAffectingFullName
{
return [NSSet setWithObjects:@"lastName", @"firstName", nil];
}
这将允许您的应用在这些值被修改时收到通知。然后,您只需覆盖将在此通知上调用的 getter
- (NSString *)fullName
{
return [NSString stringWithFormat:@"%@ %@",firstName, lastName];
}