如何在restkit映射后和保存到实体之前清除旧实体?
Posted
技术标签:
【中文标题】如何在restkit映射后和保存到实体之前清除旧实体?【英文标题】:how to clear old entity after restkit mapping and before save to entity? 【发布时间】:2014-04-20 09:03:39 【问题描述】:在restkit中,在某些情况下,我想在刷新之前清除实体。我使用跟随的代码,它可以工作。
[self clearcache]; //clear the entity
[manager getObjectsAtPath:self.path parameters:self.parameters success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
[self finishedLoadingWithItems:[mappingResult array]];
failure:^(RKObjectRequestOperation *operation, NSError *error)
];
但现在我只想在映射完成后但在将新项目保存到实体之前清除缓存。 我尝试在后续功能中使用 clearcache,但不幸的是这也会清除新项目。
[self finishedLoadingWithItems:[mappingResult array]];
【问题讨论】:
【参考方案1】:最后,我写了一个addFetchRequestBlockOnce的方法,它和addFetchRequestBlock差不多,但是在执行的时候会被移除。
[manager addFetchRequestBlockOnce:^NSFetchRequest *(NSURL *URL)
];
【讨论】:
【参考方案2】:这取决于您想要执行清除的时间(在所有请求之后?)。
通常,您希望使用 RestKit 的 fetch request block 功能(添加到 object manager),您可以在其中指定要执行的获取请求,该请求返回应清除的对象。 RestKit 将运行它并在映射期间删除生成的对象。
【讨论】:
似乎获取请求块只能添加不能删除,因此我需要使用一个附加标志,以便在我希望块清除实体时设置标志。是否有任何实例方法可以将获取请求块添加为仅执行一次? 我写了一个方法addFetchRequestBlockOnce,我觉得这是一个很好的API。 (但我的版本只是一种解决方法) 通常你会在获取请求上使用谓词。否则,您可以编辑对象管理器,以便您可以删除块或使用不同的对象管理器实例。考虑对您的更改提出拉取请求,或在 github 上提出问题以讨论修改。以上是关于如何在restkit映射后和保存到实体之前清除旧实体?的主要内容,如果未能解决你的问题,请参考以下文章