核心数据谓词 - 有什么好处?

问题描述

我最近开始学习 Core Data,我完全明白为什么管理可观察对象会带来巨大的好处。

我不清楚的部分是为什么谓词被认为如此强大,而在我看来,它们只是简单的片段。 这根本不是问题,因为它也使代码可读。 但是片段包含字符串形式的对象属性,如

„myProperty == @d“

如果我重构我的实体以便重命名属性,我现在必须遍历每个 FetchRequest 并修复谓词字符串。 如果没有,错误不是在构建时发现,而是在运行时发现。

这至少是我的理解(这可能是一种误解),这让我很恼火,我想就此主题寻求见解或建议。

解决方法

“片段”,正如您所说的那样,可以包含属性名称,但您不必将属性名称用作文字字符串。您可以改为使用 %K 占位符替换相关属性名称,并使用 #keyPath 功能从(编译器验证的)属性名称创建字符串:

NSPredicate(format:"%K == %@",#keyPath(MyEntityClass.myProperty),...)

有关 %K 占位符的详细信息,请参阅 here,有关使用 #keyPath 的讨论请参阅 here

所以不必生气 - 您可以确保您的谓词在编译时得到验证并且更容易入睡。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...