OC中定义了一个结构体怎么设置结构体的值
#import <Foundation/Foundation.h> // 定义一个结构体保存生日 typedef struct { int year; int month; int day; }Date; // 定义枚举保存性别 typedef enum{KsexMan,KsexWomen} Sex; //// 定义数组保存学生三科成绩 //int array[3] = {0}; @interface Student : NSObject { NSString *_name; Date *_birthday; int _age; float _height; float _weight; Sex *_sex; int _markC; int _markOc; int _markIos; } @property NSString *name; @property Date *birthday; @property int age,markC,markOc,markIos; @property float height,weight; @property Sex *sex;
.m文件中 Objective C code #import <Foundation/Foundation.h> #import "Student.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 创建一个学生 Student *s = [[Student alloc] init]; Student *s1 = [[Student alloc] init]; // 设置属性 s.name = @"张三"; s.birthday->year = 1970; s.birthday->month = 5; s.birthday->day = 21;
首先要说的是,你定义的Date 是一个结构体,访问结构体中的成员使用.点语法这一点是没有问题的。但不会是使用->来访问结构体中的成员。 还有一点要说的是如果定义成了属性,类Student中声明的成员变量可以省去。默认的系统会为属性生成getter,setter方法,以及使用_propertyname标识的成员变量。 你上成的代码就可以这样写 Objective C code
@interface Student:NSObject @property NSString *name; @property Date *birthday; @property int age,markC,markOc,markIos; @property float height,weight; @property Sex *sex; @end
设置Student的birthday属性中的结构体成员就可以按我上面的代码来赋值: Objective C code
s.birthday.year = 1970;
|