【发布时间】:2010-08-24 19:37:45
【问题描述】:
假设(为了论证)我有一个包含 NSDictionary 的视图类。我想要一大堆属性,所有这些属性都可以访问该字典的成员。
例如,我想要@property NSString* title 和@property NSString* author。
对于这些属性中的每一个,其实现都是相同的:对于 getter,调用 [dictionary objectForKey:propertyName];,对于 setter,对 setObject:forKey: 执行相同的操作。
编写所有这些方法需要大量时间并使用大量复制粘贴代码。有没有办法自动生成它们,就像 Core Data 对 NSManagedObject 子类的 @dynamic 属性所做的那样?需要明确的是,我只想要这种访问我在标题中定义的属性的方式,而不仅仅是任意键。
我遇到过 valueForUndefinedKey: 作为键值编码的一部分,它可以处理 getter,但我不完全确定这是否是最好的方法。
我需要这些是显式属性,以便我可以在 Interface Builder 中绑定到它们:我最终计划为此视图编写一个 IB 调色板。
(顺便说一句,我知道我使用 NSDictionary 存储这些的示例有点做作。我实际上正在编写 WebView 的子类,属性将引用 HTML 元素的 ID,但这对于逻辑并不重要我的问题!)
【问题讨论】:
标签: objective-c cocoa