gpt4 book ai didi

core-data - 核心数据 transient 计算属性

转载 作者:行者123 更新时间:2023-12-04 12:49:37 25 4
gpt4 key购买 nike

我有一个包含 lastName 和 firstName 属性的实体。出于这个问题范围之外的原因,我想要一个 fullName 属性,它被计算为 firstName + space + lastName 的串联。

因为这纯粹是一个计算值,不需要重做/撤消或任何其他更复杂的 transient 属性方面(合并等),我的直觉告诉我只需覆盖 getter 方法即可返回所述计算值。阅读表明,如果我这样做,我唯一关心的是它是否符合 KVO,我可以通过使用 keyPathsForValuesAffectingVolume 来解决这个问题,以确保对 fullName 观察的任何人的 firstName 或 lastName 的更改触发通知。

我错过了什么吗?我正在检查,因为我是这种环境的初学者。

最佳答案

我也是新手,所以我不完全确定我的答案,但据我所知,你是正确的。

- (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];
}

关于core-data - 核心数据 transient 计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com