Недавно я рассмотрел использование 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, действительно действительным в перечислении.