我想动态更改核心数据模型中某些属性的默认值。
例如,我的应用程序处理房地产投资,并且我有一个与利率(浮动类型)相关的属性。如果用户为他们正在分析的特定属性输入利率3.5% (浮点值将为3.5),我希望他们分析的下一个属性的值自动填充为3.5。
有没有一种方法可以做到这一点而不需要对NSManagedObject进行子类化?
发布于 2013-05-31 19:20:30
问得好-默认情况下,托管对象是使用托管对象模型中给定的默认值进行初始化的。但正如您所说,有时您可能需要一个动态默认值( Apple在自己的文档中使用的示例是使用当前日期/时间作为默认值)。
不幸的是,我不相信没有子类化NSManagedObject就能做到这一点。有一种苹果推荐的方法可以做到这一点-而不是覆盖init方法(不推荐),而是使用awakeFromInsert方法,该方法在有问题的对象首次插入到托管对象上下文中时调用。
以下是苹果从他们自己的文档中说的话:
awakeFromInsert:
通常使用此方法初始化特殊的默认属性值。此方法在对象的生命周期中只被调用一次。
如果要在此方法的实现中设置属性值,通常应使用基本访问器方法( setPrimitiveValue:forKey:或-更好-适当的自定义基本访问器)。这确保新值被视为基准值,而不是被记录为相关属性的可撤消更改。
所以回答你最初的问题-我想不出没有子类化NSManagedObject的方法,而子类化是官方推荐的处理动态缺省值的方法。
https://stackoverflow.com/questions/16855935
复制相似问题