FMDBを使用してオブジェクトをデータベースにシリアル化していますが、enum値を格納したいnull不可能なint列があります。FMDB typedef enum値を格納する
Person.h私は別のクラスでComponentSorting
を宣言してい
@interface TreasureChest : NSObject {
...
ComponentSorting componentSorting;
}
@property (nonatomic, readwrite) ComponentSorting componentSorting;
@end
:私は値を挿入しようとすると
Constants.h
typedef enum ComponentSorting {
kSortOrderName = 0,
kSortOrderSortOrder = 1,
} ComponentSorting;
次の文は、私は "列ComponentSortingはNULLにすることはできません"エラー、それはFMDBまたはSQLiteのiOS実装のいずれかがenumを無視しています。
[db executeUpdate:@"INSERT INTO Components (ComponentID, Name, Description, ComponentSorting) VALUES (?,?,?,?)",
comp.componentId,
comp.name,
comp.description,
comp.componentSorting
]
デバッグcomp.componentSorting
が実際kSortOrderName
(オブジェクトのinit
で設定)であることを示しています。 .NETの背景から来て、enumはintに変換可能ですが、なぜこの問題が発生するのかわかりません。
問題は、NULL値のために挿入が失敗することです。 '? 'を' 0'に置き換えると成功しますが、それは解決策ではありません。 – Echilon
整数にキャストしようとしましたか? –
ありがとう、それは部分的にそれでした(私の答えを見てください)。 – Echilon