A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z82454642 中级黑马   /  2014-3-13 22:53  /  1229 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 z82454642 于 2014-3-14 00:08 编辑

如下 Person类有一个成员变量Date类型的_birthday;
  1. @interface Person : NSObject
  2. {
  3.     Date _birthday;
  4. }
复制代码


Date类型是个结构体
  1. typedef struct{
  2.     int year;
  3.     int month;
  4.     int day;
  5. }Date;
复制代码


请问创建Person对象后,如何给_birthday内的各个变量赋值




问题已解决...自己想到一个笨方法
在类内写个方法_birthday 结构内的成员赋值,然后返回_birthday 的值
- (Date)theDayOfBorn:(int)day andtheMonthOfBorn:(int)month andtheYearOfBorn:(int)year
{
    Date date;
    date.day = day;
    date.year = year;
    date.month = month;
    return date;
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
OC 中给对象的变量赋值是通过setter方法的,但结构体的赋值还和C的一样
@interface Person : NSObject
{
    Date _birthday;
}
- (void)setBirthday;
@end
在Person的实现中
@implementation Person
- (void)setBirthday:(Date *)birthday
{
    _birthday = birthday;
}
@end

写完上面代码后(假设date是结构体)
date->year = 2000;
date->month = 3;
date->day = 23;
然后就可以赋值了(假设person 是Person对象)
[person setBirthday:date]

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
lixiangzhou 发表于 2014-3-13 23:04
OC 中给对象的变量赋值是通过setter方法的,但结构体的赋值还和C的一样
@interface Person : NSObject
{

亲,具体点,不太理解,date是一个Date类型的结构么?
是的话在哪里进行赋值操作
创建对象
Person *p = [Person new];
创建完对象怎么操作Date数据
p.birthday->year = 100?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
Person *p = [[Person alloc] init];
    Date birthday = {2011,11,11};
    p.birthday = birthday;

这样即可,结构体本质是对象,所以调用setbirthday方法时,先创建一个Date对象,再赋值,就OK
回复 使用道具 举报
cnchenys 发表于 2014-3-14 00:00
Person *p = [ init];
    Date birthday = {2011,11,11};
    p.birthday = birthday;

这个方法我试了下,对结构成员顺序有要求的,赋值必须对应到成员,不然容易出错
如果定义结构时成员顺序是day month year
按照这样做的话 day = 2011 了...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马