簡體   English   中英

在我的對象Class中使用typedef枚舉

[英]Using a typedef enum in my object Class

我有一個People課程,它掌握着一個人的各種各樣的東西。 我希望能夠確定這是一個什么樣的人,所以我想我會嘗試使用typedef枚舉,因為我之前已經看過它,它似乎是最干凈的解決方案。 但是,我不確定如何聲明這一點,然后將其變成一個屬性。

。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

#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;

我錯過了這個想法的關鍵部分嗎?

您可以像對任何基本類型(如intfloat )一樣定義它。 當您使用typedef ,您告訴編譯器該名稱是表示此名稱的類型。 因此,您將添加一個具有該類型的實例變量(我將我的帖子中的類型大寫以將其與變量或屬性區分開來):

personType personType;

然后添加屬性定義:

@property (nonatomic) personType personType;

然后你合成並使用它:

@synthesize personType;

self.personType = kPersonTypeStaff;

枚舉類型實際上是某種類型的整數,它包含枚舉的所有值。 通過使用typedef ,您可以指定此整數應該是枚舉中的常量之一,而不是其他任何內容,編譯器可以幫助強制執行此操作。 但是,除了變量類型之外,您對它的處理方式與int類型完全相同。

您添加以下屬性:

@property (nonatomic) personType personType;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM