gpt4 book ai didi

iphone - 在我的对象类中使用 typedef 枚举

转载 作者:技术小花猫 更新时间:2023-10-29 10:34:16 24 4
gpt4 key购买 nike

我有一个 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 类型的方式完全相同。

关于iphone - 在我的对象类中使用 typedef 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com