gpt4 book ai didi

objective-c - willSave 或 validateForUpdate 中的 NSManagedObject 动态属性更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:36 25 4
gpt4 key购买 nike

我有一个 NSManagedObject,它具有我仅用于在 NSFetchedResultsController 中进行排序的属性。该属性的值由其他属性或关系的值确定。

因此,当我准备保存对象时,我会计算出它的值(value)。从我对文档的阅读和实验来看,我似乎可以在 - (void) willSave- (BOOL) validateForUpdate: NSError **error 中执行此操作。

我的实验表明这些是串联调用的,首先是 validateForUpdate,然后是 willSave

但是,由于我对幕后发生的事情的洞察力很差,我想知道是否有人可以建议一个地方是否比另一个地方更好来设定值(value),为什么?

谢谢。

最佳答案

如果你有一个派生值,你通常不想保存它,但如果你确实想保存它(因此否定了动态生成它的优势,但如果你有很多,可以出于速度原因这样做对象并想做一些花哨的谓词工作。)你可以在你的模型中将它设置为一个普通值,然后创建一个自定义访问器来检查是否设置了原始值,使用 primitiveValueForKey:@"propertyName"...类似

.h 
@property()NSString* someProperty;

.m
@dynamic someProperty;
-(NSString *) someProperty
{
pValue = [self primitiveValueForKey;@"someProperty"];
if(!pValue)
{
//calculate pvalue
pValue = [self derivedPValue];
[self setPrimitiveValue: pValue forKey:@"someProperty"];
}
return pValue;
}

关于objective-c - willSave 或 validateForUpdate 中的 NSManagedObject 动态属性更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485735/

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