way*_*yne 7 core-data transient
我有一个包含lastName和firstName属性的实体.由于超出此问题范围的原因,我想要一个fullName属性,该属性被计算为firstName + space + lastName的串联.
因为这纯粹是一个计算值,不需要重做/撤消或任何其他更复杂的瞬态属性(合并等),我的直觉告诉我只需覆盖getter方法返回所述计算值.阅读建议,如果我这样做,我唯一关心的是它是否符合KVO,我可以通过使用keyPathsForValuesAffectingVolume解决这个问题,以确保更改firstName或lastName触发通知,以便观察fullName.
我错过了什么吗?我正在检查,因为我是这个环境的初学者.
我对此也很陌生,所以我不完全确定我的答案,但据我了解,你是对的。
- (NSString *)fullName
{
[self willAccessValueForKey:@"fullName"];
NSString *tmp = [self primitiveFullName];
[self didAccessValueForKey:@"fullName"];
if (!tmp) {
tmp = [NSString stringWithFormat:@"%@ %@", [self firstName], [self lastName]];
[self setPrimitiveFullName:tmp];
}
return tmp;
}
- (void)setFirstName:(NSString *)aFirstName
{
[self willChangeValueForKey:@"firstName"];
[self setPrimitiveFirstName:aFirstName];
[self didChangeValueForKey:@"firstName"];
[self setPrimitiveFullName:nil];
}
- (void)setLastName:(NSString *)aLastName
{
[self willChangeValueForKey:@"lastName"];
[self setPrimitiveLastName:aLastName];
[self didChangeValueForKey:@"lastName"];
[self setPrimitiveFullName:nil];
}
+ (NSSet *)keyPathsForValuesAffectingFullName
{
return [NSSet setWithObjects:@"firstName", @"lastName", nil];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3001 次 |
| 最近记录: |