2011-08-19 23 views
12

Bir insan hakkında çeşitli bitleri içeren bir People sınıfım var. Bunun ne tür bir insan olduğunu belirleyebilmeyi isterdim, bu yüzden daha önce yapmış olduğumdan beri en iyi çözüm gibi gözüken bir yazım hatası kullanacağımı düşündüm. Ancak, bunu nasıl ilan edeceğinden emin değilim, sonra bir mülkiyete dönüştürün.Nesnemde bir typedef enum kullanma Sınıf

.h

typedef enum { 
    kPersonTypeFaculty, 
    kPersonTypeStaff, 
    kPersonTypeSearch 
} personType; 

@interface Person : NSObject { 
    NSString *nameFirst; 
    NSString *nameLast; 
    NSString *email; 
    NSString *phone; 
    NSString *room; 
    NSString *status; 
    NSString *building; 
    NSString *department; 
    NSString *imageURL; 
    NSString *degree; 
    NSString *position; 
    NSString *bio; 
    NSString *education; 
} 

@property (nonatomic, retain) NSString *nameFirst; 
@property (nonatomic, retain) NSString *nameLast; 
@property (nonatomic, retain) NSString *email; 
@property (nonatomic, retain) NSString *phone; 
@property (nonatomic, retain) NSString *room; 
@property (nonatomic, retain) NSString *status; 
@property (nonatomic, retain) NSString *building; 
@property (nonatomic, retain) NSString *department; 
@property (nonatomic, retain) NSString *imageURL; 
@property (nonatomic, retain) NSString *degree; 
@property (nonatomic, retain) NSString *position; 
@property (nonatomic, retain) NSString *bio; 
@property (nonatomic, retain) NSString *education; 

@end 

.m

ben böyle bir şey yapmak mümkün istiyorum
#import "Person.h" 


@implementation Person 

@synthesize nameFirst, nameLast, email, phone, room, status, building, department, imageURL, degree, position, bio, education; 

- (void)dealloc { 
    [nameFirst release]; 
    [nameLast release]; 
    [email release]; 
    [phone release]; 
    [room release]; 
    [status release]; 
    [building release]; 
    [department release]; 
    [imageURL release]; 
    [degree release]; 
    [position release]; 
    [bio release]; 
    [education release]; 
    [super dealloc]; 
} 

@end 

:

Person *person = [[[Person alloc] init] autorelease]; 
person.nameFirst = @"Steve"; 
person.nameLast = @"Johnson"; 
person.personType = kPersonTypeStaff; 

Ben bu fikri çok önemli bir bölümünü eksik?

cevap

17

Kendin gibi tanımlamak olur herhangi ilkel tip (gibi int veya float) için. typedef'u kullandığınızda, derleyiciye bu adın bunu temsil eden bir tür olduğunu söylersiniz. Sonra

@property (nonatomic) personType personType; 

:

personType personType; 

Sonra bir özellik tanımını ekleyin: Yani, bu tür bir örnek değişkeni eklersiniz (I değişkenin veya özelliğin ayırmak için benim sonrası türünü harfle) Eğer sentezlemek ve kullanmak:

@synthesize personType; 

self.personType = kPersonTypeStaff; 

bir enum türü aslında enum değerlerinin tümünü tutan tamsayı bazı türüdür. typedef kullanarak, bu tamsayı enumdaki sabitlerden biri ve başka hiçbir şey olmaması gerektiğini belirtebilirsiniz ve derleyici bunun uygulanmasına yardımcı olabilir. Ancak, değişken tipi dışında, tam olarak int türüyle aynı şekilde davranırsınız.

+0

Huşu, çok kolay! Teşekkür ederim! –

2

Aşağıdaki özellik ekleyin:

@property (nonatomic) personType personType; 
+1

Numaralandırmayı tutamazsınız. – ughoavgfhw

+0

Teşekkürler, kopyala ve yapıştır hata! –