列挙値を辞書に保存するにはどうすればよいですか?
次のことを試してみると
enum someEnum
{
field0 = 0,
field1 = 1,
field2 = 2,
};
enum someEnum someEnumObject;
を使用して辞書に保存しようとしています
[NSDictionary辞書WithObjectsAndKeys:]
someEnumObject, @"enum",
私はこれを手に入れます
警告:セマンティックの問題:整数からポインタへの変換に互換性がなく、「列挙型の動作」を「id」型のパラメータに送信しています
以下を使用して辞書に保存します。
[NSNumber numberWithInt:enumValue], @"enum",
そして、次のように取得できます。
enumValue = [[dictionary valueForKey:@"enum"] intValue];
NSNumberリテラルを使用して列挙型をオブジェクトに変換し、NSDictionaryに格納できるようにすることをお勧めします。
[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil];
リテラルは、ものを書くための速記を提供します。この辞書は次のように書くことができます。
@{@"enum":@(someEnumObject)};
リテラルの詳細については、こちらをご覧ください: http://clang.llvm.org/docs/ObjectiveCLiterals.html
enum
は基本的に整数であり、NSDictionary
はオブジェクトを格納するため、列挙型をオブジェクトに変換する必要があります。 NSNumber
はこれに適しています:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];
現代では、@(enumValue)
がより簡単なアプローチです。