0

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

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

„myProperty == @d“

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

这至少是我的理解(这可能是一种误解),这让我非常恼火,以至于我想就这个话题寻求见解或建议。

4

1 回答 1

1

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

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

有关占位符的更多信息,请参见此处有关使用.%K#keyPath

所以不必烦恼——您可以确保您的谓词在编译时得到验证并且更容易休眠。

于 2021-01-24T11:17:11.533 回答