优先使用属性访问器或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来代替。 你会有更好的结果和更可维护的代码库。