以下是我的程序的一些背景知识:[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
属性?我的代码的两个版本看起来都一样......
答案 0 :(得分:3)
在您的第一个版本中,编译器知道您正在使用哪种对象,因为它使用Channel *变量来引用数据成员。在第二个版本中,编译器只知道可以返回NSObject,但不知道返回的对象是否属于某个类。您可以通过强制转换返回值来更改此值:
NSString *channelId = ((Channel*)[self.channels objectAtIndex:indexPath.row]).channelId;