Ios 首选属性访问器或KVC样式来访问核心数据属性

Ios 首选属性访问器或KVC样式来访问核心数据属性,ios,core-data,kvc,Ios,Core Data,Kvc,我已经阅读了马库斯·S·扎拉(第二版)与iOS相关的章节,受益匪浅。不过,我想知道一个方面,书中提到的风格与我自己的风格不同 本书的示例通过利用KVC访问NSManagedObjects的属性和关系(例如[配方值forkey:@“name”])。关于如何定义属性访问器(例如用于recipe.name)有(只有)两个简要说明。这似乎意味着KVC的明确建议有利于属性访问器 我通常喜欢属性访问器,例如,因为它们可以防止由输入错误引起的错误(例如,[recipe valueForKey:@“nam”])

我已经阅读了马库斯·S·扎拉(第二版)与iOS相关的章节,受益匪浅。不过,我想知道一个方面,书中提到的风格与我自己的风格不同

本书的示例通过利用KVC访问
NSManagedObject
s的属性和关系(例如
[配方值forkey:@“name”]
)。关于如何定义属性访问器(例如用于
recipe.name
)有(只有)两个简要说明。这似乎意味着KVC的明确建议有利于属性访问器

我通常喜欢属性访问器,例如,因为它们可以防止由输入错误引起的错误(例如,
[recipe valueForKey:@“nam”]
),并且因为Xcode可以为我生成它们的源代码(
编辑器
|
创建NSManagedObject子类


我的问题是:有没有技术上的原因来解释为什么应该使用KVC而不是一般的属性访问器样式?

KVC非常有用,这本书强调了KVC的使用,因为坦率地说,在我看来,iOS开发并没有足够强调它。理解KVC是iOS开发者工具包中非常有用的工具,不幸的是,它的教学已经被搁置一旁

话虽如此,出于您所述的原因,您应该使用属性访问器。它们在编译时而不是运行时捕获错误,而且速度稍快

KVC在对集合进行操作时非常有用,并且在动态情况下或在您不一定知道所针对的对象的情况下非常有用。在这些方面,点语法的失败相当可怕。点语法不适用于
id
,我认为这是Objective-C开发的基石

在任何情况下,都没有理由不使用属性访问器,我通常在生产代码中使用它们


最后一点注意:我不使用Xcode的代码生成。它有足够多的缺陷,我建议人们改用mogenerator。您将获得更好的结果和更易于维护的代码库。

这涵盖了类似的领域,尽管没有CoreData焦点。Tx:您引用的Apple docs re performance impact(在回答相关问题时)的内容非常有用。Tx。我已经发布了一个后续问题。应该是这样。如果你感兴趣的话:我还有三条建议(简短的评论)推荐这本书可能的第三版。