iphone - 使用 Core Data 实现枚举的最佳方法

将核心数据实体绑定(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/

相关文章:

ios - 使用自动布局在 UICollectionView 中指定单元格的一维

objective-c - 在 Objective-C 中获取对象属性列表

objective-c - 将 NSURL 转换为本地文件路径

objective-c - 检查方法是否存在

ios - 了解 ibecon 距离

ios - UIAlertController 自定义字体、大小、颜色

objective-c - iOS 应用程序 : how to clear notification

objective-c - 有条件地从 AppDelegate Storyboard中的不同位置开始

iphone - 如何制作 URL/电话可点击的 UILabel?

ios - 在输入击键时获取 UITextField 的值?