2012-01-20 9 views
7

dönüştürmekDizisi -</p> <pre><code>enum {MyA, MyB, Null}; typedef NSNumber myEnum; </code></pre> <p>Yoksa bir dizi nasıl oluşturabilirim <pre><code>typedef enum {MyA, MyB, Null} myEnum; </code></pre> ) Having NSArray

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

Sadece) "Implicit conversion of 'int' to NSNumber* is disallowed with ARC(ref. counting)

2 verir Eğer yaratabiliyorsan bir dizi nasıl NSArray dönüştürmek için? , Bir dizi oluşturmak için, Sonra

typedef enum { MyA, MyB, Null } myEnum; 

NSNumber s nesnelerin içine numaraları sarın:

cevap

15

deneyin bu şekilde yapmak için Temelde

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

Eğer bu şekilde yapabiliriz (Xcode 4 veya üstü gerektirir)), @ (myb)]; – Vinh

6

, bir değeri sarmak gerekiyor NSNumber nesnesi.

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

[array addObject:INT_OBJ(MyA)]; 

Ve diğer dizisi ile yanlış bir şey oldu, sadece bunu böyle tanımlanmış olmalıydı:

typedef enum {MyA, MyB, Null} myEnum; 

myEnum values[] = { MyA, MyB }; 

Sorun, eşit değil ki, bir NSNumber olarak MyEnum tanımlanan olmasıydı enum değeri (int). Obj C'de

3

:

Swift ise
enumArray = @[@(enum1),@(enum2)]; 

: NSArray * a = @ [@ (Mya: tembel insanlar için

enumArray = NSArray(objects: enum1.rawValue, enum2.rawValue); 
İlgili konular