请求成员不是结构或联合

时间:2011-05-16 06:55:48

标签: objective-c

以下是我的程序的一些背景知识:[self.channels]是一个Channel个对象的数组。每个Channel对象都有一个名为channelId的合成字符串。

编译

Channel *channel = [self.channels objectAtIndex:indexPath.row];
NSString *channelId = channel.channelId;

无法编译

NSString *channelId = [self.channels objectAtIndex:indexPath.row].channelId;
// Request for member 'channelId' in something not a structure or union

为什么我无法将命令链接到channelId属性?我的代码的两个版本看起来都一样......

1 个答案:

答案 0 :(得分:3)

在您的第一个版本中,编译器知道您正在使用哪种对象,因为它使用Channel *变量来引用数据成员。在第二个版本中,编译器只知道可以返回NSObject,但不知道返回的对象是否属于某个类。您可以通过强制转换返回值来更改此值:

NSString *channelId = ((Channel*)[self.channels objectAtIndex:indexPath.row]).channelId;