Я использую FMDB для сериализации объекта в базу данных, у меня есть необнуляемый столбец int, в котором я хотел бы сохранить значение перечисления.
Person.h
@interface TreasureChest : NSObject {
...
ComponentSorting componentSorting;
}
@property (nonatomic, readwrite) ComponentSorting componentSorting;
@end
Я объявляю ComponentSorting
в отдельном классе:
Constants.h
typedef enum ComponentSorting {
kSortOrderName = 0,
kSortOrderSortOrder = 1,
} ComponentSorting;
Когда я пытаюсь вставить значение в следующем выражении, я получаю сообщение об ошибке «ComponentSorting column not NULL», как если бы либо FMDB, либо реализация SQLite для iOS игнорировала перечисление.
[db executeUpdate:@"INSERT INTO Components (ComponentID, Name, Description, ComponentSorting) VALUES (?,?,?,?)",
comp.componentId,
comp.name,
comp.description,
comp.componentSorting
]
Отладка показывает, что comp.componentSorting
действительно kSortOrderName
(устанавливается в init
объекта). Исходя из фона .NET, перечисления в значительной степени конвертируются в целые, поэтому я не понимаю, почему это вызывает проблемы.