Objective c 请求非结构或联盟中的成员

Objective c 请求非结构或联盟中的成员,objective-c,Objective C,以下是我的程序的一些背景:[self.channels]是一组频道对象。每个Channel对象都有一个名为channelId的合成字符串 编译 Channel *channel = [self.channels objectAtIndex:indexPath.row]; NSString *channelId = channel.channelId; 不编译 NSString *channelId = [self.channels objectAtIndex:indexPath.row].ch

以下是我的程序的一些背景:
[self.channels
]是一组
频道
对象。每个
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
属性?我的代码的两个版本看起来是一样的…

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


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

相关侧栏中的:的可能重复项