Недавно я рассмотрел использование enum typedef и сохранил его как NSNumber в Core Data. Я реализовал свой собственный подкласс NSManagedObject и создал свойство для моего типа. В средствах доступа, которые я затем преобразовал в и из NSNumber:
- (MyTypedef)type {
NSNumber *value = [self primitiveValueForKey:@"type"];
return [value integerValue];
}
- (void)setType:(MyTypedef)aType {
NSNumber *value = [NSNumber numberWithInteger:aType];
[self setPrimitiveValue:value forKey:@"type"];
}
В конце концов, я не пошел с этим решением, но тогда оно работало нормально для меня (на iPhone). Не уверен, что приведенный выше код абсолютно правильный - я просто набрал его в этом окне браузера.
Вероятно, потребуется больше работы, если вы хотите использовать KVO и т. Д., И вы можете захотеть выполнить некоторую проверку ошибок в методе доступа, чтобы проверить, действительно ли то, что вы возвращаете в NSNumber, действительно в перечислении.