0

次のような列挙型があるとします。

typedef enum {
    FooGoods = 0,
    FooInsurance = 1,
} FooCategory;

そして私はそれを別のオブジェクトのプロパティとivarとして持っています

@property (nonatomic) FooCategory *category;

他のオブジェクトを作成するとき、私はからの値で埋めているので、次のNSDictionaryようなことをします。

[baz setCategory:[aDictionary objectForKey:@"Category"]];

ただし、列挙型がポインターではないため、エラーが発生します。

これを行うと、「互換性のない整数からポインタへの変換」という警告も表示されます。

[baz setCategory:[[aDictionary objectForKey:@"Category"] intValue]];

エラー/警告のない他の方法はありますか?

4

1 に答える 1

2

以下は正しくありません

@property (nonatomic) FooCategory *category;

に変更する必要があります

@property (nonatomic) FooCategory category;

これで警告なしで動作するはずです

baz.category = (FooCategory)[aDictionary objectForKey:@"Category"] intValue];
于 2012-06-01T22:39:45.867 に答える