2012-01-20 10 views
7

に変換配列は -</p> <pre><code>enum {MyA, MyB, Null}; typedef NSNumber myEnum; </code></pre> <p>または私は配列を作成するにはどうすればよい <pre><code>typedef enum {MyA, MyB, Null} myEnum; </code></pre> )を持つNSArrayの

myEnum* myEnumTemp[] = {MyA, MyB}; 

はジャスト)"Implicit conversion of 'int' to NSNumber* is disallowed with ARC(ref. counting)

2与えますあなたがcreaできる場合配列をNSArrayに変換する方法は? 、アレイを作成し、その後

typedef enum { MyA, MyB, Null } myEnum; 

NSNumberのオブジェクトに番号をラップ:

答えて

15

てみてくださいは、このようにそれを行うには、基本的に

NSArray *a = [NSArray arrayWithObjects:[NSNumber numberWithInteger:MyA], 
             [NSNumber numberWithInteger:MyB], 
             nil]; 
+7

あなたはこのようにそれを行うことができます(Xcodeの4以上が必要です) )、@(MyB)]; – Vinh

6

、あなたは内の値をラップする必要がありますNSNumberオブジェクトです。

#define INT_OBJ(x) [NSNumber numberWithInt:x] 

[array addObject:INT_OBJ(MyA)]; 

そして、あなたの他のアレイと間違って何もありませんでした、あなたはちょうどこのようにそれを定義しておく必要があります。

typedef enum {MyA, MyB, Null} myEnum; 

myEnum values[] = { MyA, MyB }; 

問題は、あなたが等しくされていない、NSNumberとしてmyEnumを定義したということでした列挙値(int)。 OBJのCで

3

スウィフトで
enumArray = @[@(enum1),@(enum2)]; 

:NSArrayの* A = @ [@(ミャー:怠惰な人のための

enumArray = NSArray(objects: enum1.rawValue, enum2.rawValue); 
関連する問題