ios - 核心数据属性的自定义 Getter

标签 ios objective-c cocoa-touch cocoa core-data

我在我的应用程序中引入了软删除模式。我不会将对象从我的上下文中删除,而是将它们标记为“已删除”。我将在这里使用从菜谱中(软)删除成分的示例。

我在很多地方都需要食谱的成分。如果可能的话,我想避免更新所有这些(并且可能会丢失一个)。相反,我可以重新定义配方类的 ingredients getter,以便过滤掉软删除的对象吗?

在少数情况下,我需要完整的成分列表(包括软删除),将使用新属性,例如 ingredientsInclusionDeleted

这样合理吗?使用自定义 getter 执行除返回预期内容之外的其他操作是否有任何显着的副作用?我应该注意哪些具体的核心数据?

最佳答案

是的,你可以做到。然而,你的方法是倒退的。 默认 getter 不应该有任何谓词。它应该完全按照其含义进行操作,即未过滤的结果集。想象一下 6 个月后有人阅读你的代码。他们会知道“成分”实际上意味着“过滤成分”吗?没有。

因此,不要更改 default getter 的含义,而是创建一个新的 getter(命名为“filteredIngredients”之类的名称,并在任何地方使用它。这是正确的长期解决方案。

如果您担心忘记更改某些地方的属性,请执行以下操作:暂时将您的成分 getter 重命名为其他名称,例如“tempIngredients”。这将在使用它的任何地方导致编译器错误。使用适当的 getter 修复所有这些编译器错误,然后将默认 getter 重命名回“ingredients”。

希望这有帮助。

关于ios - 核心数据属性的自定义 Getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122021/

相关文章:

ios - 如何更改 View 比例

cocoa-touch - 使用 Core Data 最有效的方法是什么?

objective-c - 如何将指针的地址传递给线程而不首先超出范围?

iphone - 如何将图像和录制文件保存在临时目录中?

iphone - UILabel 不会随按钮变暗

iphone - 点击 UIButton 时如何发送对象作为参数?

iphone - 在 3/4 行之后,scrollToRowAtIndexPath 未滚动到正确的行

ios - 使用 Cassini 进行 SSL 身份验证

ios - 为什么 Safari 在使用 iOS 6 设备进行远程调试时显示 "No Inspectable Applications"?

ios - UITableView 中的 CollectionView 单元格重复