Car*_*loS 6 cocoa objective-c key-value-coding
我正在阅读:To-Many Properties的集合访问器模式,但我不确定我在哪里或应该使用它.有人可以指出一些我可以使用的方案Collection Accessor Patterns for To-Many Properties来使我的代码更好或使我的代码编写更容易吗?
您正在阅读的集合访问器模式改进了键值编码与 NSArray、NSDictionary 等集合一起使用的方式。如果您在自己的类中实现它们,则您的类可以像标准集合类一样与 KVC 一起使用。例如,也许您有一个Flight包含Passenger. 但也许这些乘客没有存储在 NSArray 中,而是从数据库或其他东西中提取。如果您实现以下方法:
-countOfPassengers-passengersAtIndexes:-getPassengers:range:然后使用您的类的代码可以使用 KVC 来有效地访问乘客列表。例如,您可能会获得乘客常旅客号码列表(假设Passenger具有这样的属性),如下所示:
NSArray *frequentFlyerNumbers = someFlight.passengers.frequentFlyerNumbers;
Run Code Online (Sandbox Code Playgroud)
这是非常方便的东西——使您不必自己迭代集合并收集所有这些数字。如果您不知道可以使用像 NSArray 这样的标准集合来做到这一点,这可能看起来令人惊讶,所以先花一点时间来吸收这一部分,然后考虑通过实现一些简单的方法,您已经做了同样的事情你自己的Flight班级。即使乘客的存储空间完全位于您的班级内部,这仍然有效,这非常酷。
现在,上面的方法仅涵盖 getter,但您可以通过实现以下方式对 setter 执行相同的操作:
-insertPassengers:atIndexes:-removePassengersAtIndexes:-replacePassengersAtIndexes:withPassengers:现在,您的代码再次可以使用 KVC 在航班中添加和删除乘客:
[someFlight replacePassengersAtIndexes:bumpedPassengerIndexes
withPassengers:passengersFromLateConnectingFlight];
Run Code Online (Sandbox Code Playgroud)
您也可以实现其他 KVC 访问器,但我认为不需要为您列出所有这些,因为它们就在您链接的文章中。关键是键值编码是有用的东西,可以在很多地方使用,并且通过实现少量方法,您可以使自己的类兼容 KVC。
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |