Plists には、入力できるデータ型の数が限られているようです。ただし、int を Number として格納し、[x integerValue] を使用して int に戻すなどの抜け穴があることはわかっています。プロパティ リストに typedef 列挙型を格納するための同様の回避策はありますか?
それらは実際には単なる int であるため、それらを Number として保存し、typedef としてキャストする方法はありますか?
Plists には、入力できるデータ型の数が限られているようです。ただし、int を Number として格納し、[x integerValue] を使用して int に戻すなどの抜け穴があることはわかっています。プロパティ リストに typedef 列挙型を格納するための同様の回避策はありますか?
それらは実際には単なる int であるため、それらを Number として保存し、typedef としてキャストする方法はありますか?
生の列挙整数値を保存してから、整数として再度ロードする必要があります。それらを再度ロードしたら、整数を取得するためにNSNumbers
使用できます。[num intValue]
次に、それを列挙型と比較できます。次に例を示します。
intRep = [loadedNumber intValue];
if (intRep == MY_ENUM_CONSTANT) {
// Do something...
}
// ... etc.
値を plist 内の文字列として保存すること"MY_ENUM_CONSTANT"
には意味がありません-isEqualToString
。また、システムと確実に戦っている場合は、値をリバース エンジニアリングします。バイナリ データ オブジェクトを plist 内に格納できる可能性がありますが、さらに柔軟性が必要な場合は、必要なものに対して少しやり過ぎている可能性があります。
それらを plist に適した形式に変換する必要があります。最も単純な整数値を使用して NSNumber を使用できますが、代わりに、文字列値との間で変換する関数をいくつか記述することもできます。for enum、0、1、2 などのデフォルトの整数を使用する場合は、enum を文字列の配列へのインデックスとして使用し、文字列から enum/int に戻すために、文字列配列を介して for ループを使用できます。一致するインデックスを返します。