如何解决核心数据谓词 - 有什么好处?
我最近开始学习 Core Data,我完全明白为什么管理可观察对象会带来巨大的好处。
我不清楚的部分是为什么谓词被认为如此强大,而在我看来,它们只是简单的片段。 这根本不是问题,因为它也使代码可读。 但是片段包含字符串形式的对象属性,如
„myProperty == @d“
如果我重构我的实体以便重命名属性,我现在必须遍历每个 FetchRequest 并修复谓词字符串。 如果没有,错误不是在构建时发现,而是在运行时发现。
这至少是我的理解(这可能是一种误解),这让我很恼火,我想就此主题寻求见解或建议。
解决方法
“片段”,正如您所说的那样,可以包含属性名称,但您不必将属性名称用作文字字符串。您可以改为使用 %K
占位符替换相关属性名称,并使用 #keyPath
功能从(编译器验证的)属性名称创建字符串:
NSPredicate(format:"%K == %@",#keyPath(MyEntityClass.myProperty),...)
有关 %K
占位符的详细信息,请参阅 here,有关使用 #keyPath
的讨论请参阅 here。
所以不必生气 - 您可以确保您的谓词在编译时得到验证并且更容易入睡。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。