优先使用属性访问器或KVC样式来访问Core Data属性

我已经阅读了Marcus S. Zarra的iOS数据存储和pipe理iOS OS X和iCloud (第二版)的iOS相关章节,以获得巨大收益。 但是,我想知道一个方面,这本书提出了一个与我自己不同的风格。

本书的示例通过使用KVC访问NSManagedObject的属性和关系(例如[recipe valueForKey: @"name"] )。 对于如何定义属性访问器(例如在recipe.name使用),有(仅)两个简单的解释。 这似乎暗示了KVC有利于财产访问者的明确build议。

我一般喜欢属性访问器,例如,因为他们防范错误导致的错误(例如[recipe valueForKey: @"nam"] ),因为Xcode可以为我生成它们的源代码( Editor | Create NSManagedObject Subclass )。

我的问题是这样的:有什么技术上的原因,为什么一个人应该使用KVC,而不是一般的财产访问或风格?

KVC是非常有用的,本书强调KVC的使用,因为,坦率地说,iOS开发在我看来并不足够 。 了解KVC是iOS开发人员工具箱中非常有用的工具,不幸的是,它的教学已经走到了一边。

话虽如此,由于你陈述的原因,你应该使用财产访问者。 他们确实在编译时发现了错误,而不是运行时间,而且速度也微乎其微。

当你对集合进行操作时,KVC非常有用,而且在dynamic的情况下,或者在你不一定知道你正在处理什么对象的情况下,KVC非常有用。 这些地方的点语法失败相当可怕。 在我看来,Dot语法不能用于Objective-C开发的angular落。

在任何情况下,没有理由不使用财产访问者,我通常在我的生产代码中使用它们。

最后一点:我不使用Xcode的代码生成。 它有足够的缺陷,我build议人们使用mogenerator来代替。 你会有更好的结果和更可维护的代码库。