Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:在修改托管对象模型时随时更新模型中的字段_Ios_Core Data - Fatal编程技术网

iOS:在修改托管对象模型时随时更新模型中的字段

iOS:在修改托管对象模型时随时更新模型中的字段,ios,core-data,Ios,Core Data,我的模型上有一个最后更新的字段。每当托管对象模型发生更改时,我都希望该字段得到更新。有没有办法让这一切自动发生?或者,当我进行其他修改时,是否需要手动更新该字段?是否有任何方法可以自动完成此操作? 不,核心数据不是数据库,而是抽象对象图管理的API。它没有唯一性、自动递增值等概念 或者,当我进行其他修改时,是否需要手动更新该字段? 正确,例如,具有应用程序随每次更改而设置的lastModified属性。您可以KVO实体中的所有键,但这可能不是必需的。我建议您仅在实际保存对象时更新lastUpda

我的模型上有一个最后更新的字段。每当托管对象模型发生更改时,我都希望该字段得到更新。有没有办法让这一切自动发生?或者,当我进行其他修改时,是否需要手动更新该字段?

是否有任何方法可以自动完成此操作? 不,核心数据不是数据库,而是抽象对象图管理的API。它没有唯一性、自动递增值等概念

或者,当我进行其他修改时,是否需要手动更新该字段?
正确,例如,具有应用程序随每次更改而设置的lastModified属性。

您可以KVO实体中的所有键,但这可能不是必需的。我建议您仅在实际保存对象时更新lastUpdated属性,因为在此之前,您仍然可以故意放弃更改,或者因为应用程序终止

因此,您可以简单地覆盖willSave。这是专门为这种情况设计的,它提到了最后修改的属性,但请注意文档中提到的注意事项

如果要更新持久属性值,通常应在进行更改之前测试任何新值是否与现有值相等。如果使用标准访问器方法更改属性值,则核心数据将观察结果更改通知,因此在保存对象的托管对象上下文之前,调用将再次保存。如果继续修改willSave中的值,将继续调用willSave,直到程序崩溃

例如,如果设置了上次修改的时间戳,则应检查之前是否在同一保存操作中设置了该时间戳,或者现有时间戳是否不小于当前时间的小增量。通常,最好为保存的所有对象计算一次时间戳,例如,响应NSManagedObjectContextWillSaveNotification


你是指模型本身,还是某个实体对象?我指的是实体对象。我更多地考虑了NSManagedObject上的某个委托,该委托可能在保存对象时被调用。我想我可以用KVO之类的东西,对吧?