2012-01-20 17 views
7

MającArray teksty stałe - konwersja do NSArray

enum {MyA, MyB, Null}; 
typedef NSNumber myEnum; 

Or

typedef enum {MyA, MyB, Null} myEnum; 

1) Jak mogę utworzyć tablicę

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

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

2) Jeśli potrafisz kreować tablicę, jak przekonwertować ją na NSArray?

Odpowiedz

15

spróbować zrobić to w następujący sposób:

typedef enum { MyA, MyB, Null } myEnum; 

Następnie, aby utworzyć tablicę, owinąć numery do NSNumber s obiektów:

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

dla leniwych można zrobić to w ten sposób (wymaga Xcode 4 lub wyższa): NSArray * a = @ [@ (MyA),@(Moje b)]; – Vinh

6

Zasadniczo trzeba owinąć wartości w Obiekt NSNumber.

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

[array addObject:INT_OBJ(MyA)]; 

I nie było nic złego z drugiej tablicy, po prostu powinny być zdefiniowane tak:

typedef enum {MyA, MyB, Null} myEnum; 

myEnum values[] = { MyA, MyB }; 

Problem polegał na tym, że określona myEnum jako NSNumber, która nie jest równa wartość wyliczeniowa (int).

3

W Obj C:

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

w Swift:

enumArray = NSArray(objects: enum1.rawValue, enum2.rawValue); 
Powiązane problemy