[英]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;
我錯過了這個想法的關鍵部分嗎?
您可以像對任何基本類型(如int
或float
)一樣定義它。 當您使用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.