我目前刚开始使用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
答案 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;
击> <击> 撞击>