Che*_*Dev 0 core-data objective-c
我想动态更改核心数据模型中某些属性的默认值.
例如,我的应用程序处理房地产投资,我有一个与利率相关的属性(类型Float).如果用户为他们正在分析的特定属性输入3.5%的利率(浮动值为3.5),我希望他们分析的下一个属性的值自动填充3.5.
有没有办法在没有子类化NSManagedObject的情况下完成这个?
好问题 - 默认情况下,托管对象使用托管对象模型中给出的默认值进行初始化.但是就像你说的,有时你可能想要一个动态默认值(Apple在他们自己的文档中使用的例子是使用当前日期/时间作为默认值).
不幸的是,我不相信没有子类化就有办法做到这一点NSManagedObject.有一种Apple建议的方法 - 而不是覆盖init方法(不推荐),而是使用awakeFromInsert方法,当有问题的对象首次插入到托管对象上下文中时调用该方法.
以下是Apple在他们自己的文档中所说的话:
awakeFromInsert:您通常使用此方法初始化特殊的默认属性值.此方法仅在对象的生命周期中调用一次.
如果要在此方法的实现中设置属性值,通常应使用原始访问器方法(或者
setPrimitiveValue:forKey:更好 - 适当的自定义原始访问器).这可确保将新值视为基准值,而不是将其记录为相关属性的可撤消更改.
所以回答你原来的问题 - 我想不出没有子类化的方法NSManagedObject,子类化是官方推荐的处理动态默认值的方法.
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |