OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性:

  定义一个学生类

  性别 -- 枚举

  生日 入学日期  毕业日期  --  结构体

代码示例:

声明文件 Student.h:

#import <Foundation/Foundation.h>
typedef struct {
    int year;
    int month;
    int day;
} Date; 
typedef
enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @interface Student : NSObject { @public int _age; NSString* _name; Gender _gender; // 生日 Date _birthday; // 入学时间 Date _entranceTime; // 毕业时间 Date _graduation; } // 自我介绍 - (void) selfIntroduce; // 枚举值转换为性别 + (NSString*) getGenderByEnumValue:(Gender) gender; @end

实现文件 Student.m:      

#import "Student.h"

@implementation Student
// 输出信息
- (void)selfIntroduce{
    // 实例方法中调用类方法
    NSString* gender = [[self class] getGenderByEnumValue:_gender]; 
    // 实例方法访问成员变量

    NSLog(@"大家好,我是:%@, 性别:%@, 年龄:%i, 我是 %i年%i月%i号 破壳的  上天安排我在 %i年%i月%i号 进入本校来虐死你们  哈哈  %i年%i月%i号 虐死你们后  哥就走了", _name, gender, _age, _birthday.year, _birthday.month, _birthday.day, _entranceTime.year, _entranceTime.month, _entranceTime.day, _graduation.year, _graduation.month, _graduation.day);
}
// 性别枚举值转换为字符串
+ (NSString *)getGenderByEnumValue:(Gender)gender{
    NSString* sex;
    switch (gender) {
        case 0:
            sex = @"";
            break;
        case 1:
            sex = @"";
break; case 2: sex = @"春哥"; break; default: sex = @"我是妖"; break; } return sex; } @end

Main.m:                    

#import <Foundation/Foundation.h>
#import "Student.h" 

int main(int argc, const char * argv[]) {   
    Student * stu = [Student new];
    stu->_name = @"小马";
    stu->_age = 30;
    stu->_gender = kGenderChunGe;   
    // 结构体成员赋值  方式一
    stu->_birthday = (Date){1985, 11, 11};
// 方式二
stu->_entranceTime.year = 2000; stu->_entranceTime.month = 9; stu->_entranceTime.day = 23; // 方式三 Date date = {.year = 2004, .month = 9, .day = 21}; stu->_graduation = date; [stu selfIntroduce]; return 0; }

/*

  2015-08-27 23:58:16.727 结构体  枚举做类成员[938:44544] 大家好,我是:小马, 性别:春哥, 年龄:30, 我是 19851111 破壳的  上天安排我在 2000923 进入本校来虐死你们  哈哈  2004921 虐死你们后  哥就走了

*/

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/dx-230/p/4765172.html