将核心数据实体绑定(bind)到枚举值以便我能够为实体分配类型属性的最佳方法是什么?换句话说,我有一个名为 Item
的实体,它有一个我想绑定(bind)到枚举的 itemType
属性,最好的方法是什么。
最佳答案
如果要将值限制为枚举,则必须创建自定义访问器。所以,首先你要声明一个枚举,像这样:
typedef enum {
kPaymentFrequencyOneOff = 0,
kPaymentFrequencyYearly = 1,
kPaymentFrequencyMonthly = 2,
kPaymentFrequencyWeekly = 3
} PaymentFrequency;
然后,为您的属性声明 getter 和 setter。覆盖现有的不是一个好主意,因为标准访问器需要一个 NSNumber 对象而不是标量类型,如果绑定(bind)或 KVO 系统中的任何东西尝试访问您的值,您将遇到麻烦。
- (PaymentFrequency)itemTypeRaw {
return (PaymentFrequency)[[self itemType] intValue];
}
- (void)setItemTypeRaw:(PaymentFrequency)type {
[self setItemType:[NSNumber numberWithInt:type]];
}
最后,你应该实现 + keyPathsForValuesAffecting<Key>
所以当 itemType 改变时,你会收到 itemTypeRaw 的 KVO 通知。
+ (NSSet *)keyPathsForValuesAffectingItemTypeRaw {
return [NSSet setWithObject:@"itemType"];
}
https://stackoverflow.com/questions/1624297/