Objective-C:访问Object中的Object字段

时间:2012-02-11 01:33:46

标签: objective-c xcode

我目前刚开始使用xcode进行开发,我想知道如何访问另一个对象内的对象的字段(即Vehicle对象内的Car对象)。

对于我的cellForRowAtIndexPath方法,我正在尝试访问位于我的Admission类中的Patient Class中的一个字段。我有一个数组[myList],它保存了许可对象,在录入对象中,我有耐心的对象。

以下是我遇到问题的代码,在我的cellForRowAtIndexPath方法中:

static NSString *CellIdentifier = @"SimpleCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    NSUInteger row = [indexPath row];
    cell.textLabel.text = [[admList objectAtIndex:row]admPatName];
    return cell;
}

问题出在以下这一行:

cell.textLabel.text = [[myList objectAtIndex:row]??];

上??区域,我无法找出对该领域的正确引用。

有什么建议吗?

由于 JR

2 个答案:

答案 0 :(得分:1)

像这样:

cell.textLabel.text = [[[myList objectAtIndex:row] patient] name];

或者,如果您愿意,可以这样:

Admission *admission = [myList objectAtIndex:row];
cell.textLabel.text = admission.patient.name;

我猜你遇到的问题是点语法不能直接在[myList objectAtIndex:row]上工作,因为编译器不知道是什么类型的对象。

您通常可以在Objective-C中互换使用点或[...]语法,因此如果点语法不起作用,请尝试使用方括号。对于它的价值,您可以通过强制转换数组对象来使用点语法,但是所有括号都有点乱:

cell.textLabel.text = ((Admission *)[myList objectAtIndex:row]).patient.name;

答案 1 :(得分:0)

如果我理解正确,你的课程看起来像这样:

@interface Patient : NSObject {
  NSString *name;
}

@property (nonatomic, copy) NSString *name;

@end


@interface Admission : NSObject {
  Patient *patient;
}

@property (nonatomic, retain) Patient *patient;

@end

你有一个Admission对象的数组(admList)。以下是您将如何访问数组中索引为i的录取所引用的患者姓名:

[[[admList objectAtIndex:i] patient] name]

可替换地:

Admission *admission = [admList objectAtIndex:i];
cell.textLabel.text = admission.patient.name;

<击> 或

<击>
cell.textLabel.text = [admList objectAtIndex:i].patient.name;

<击>