我正在尝试使用 google-api-objectivec-client 获取 youtube 频道 ID。我遇到的问题基本上是由于某种原因我在尝试访问 channelId 时收到异常。我正在使用的代码:
GTLServiceYouTube *service = [[GTLServiceYouTube alloc] init];
service.APIKey = _MY_API_KEY_;
GTLQueryYouTube *query = [GTLQueryYouTube queryForSearchListWithPart:@"id"];
query.q = @"google";
query.type = @"channel";
query.maxResults = 1;
GTLServiceTicket *ticket = [service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
if (error == nil) {
GTLYouTubeSearchListResponse *products = object;
for (id item in products.items) {
GTLYouTubeSearchResult *result = item;
NSLog(@"Identifier:%@",result.identifier);
GTLYouTubeResourceId* resourceId = result.identifier;
NSLog(@"kind:%@",resourceId.kind);
NSLog(@"channel:%@",resourceId.channelId);
}
}else{
NSLog(@"Error: %@", error.description);
}
}];
运行此代码时得到的输出是:
2013-04-05 11:37:12.615 YouTest[21704:11303] Identifier:GTLYouTubeChannel 0x7233b00: {kind:"youtube#channel" channelId?:"UCK8sQmJBp8GCxrOtXWBpyEA"}
2013-04-05 11:37:12.617 YouTest[21704:11303] kind:youtube#channel
2013-04-05 11:37:12.617 YouTest[21704:11303] -[GTLYouTubeChannel channelId]: unrecognized selector sent to instance 0x7233b00
2013-04-05 11:37:12.618 YouTest[21704:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GTLYouTubeChannel channelId]: unrecognized selector sent to instance 0x7233b00'
所以我的实现在我试图访问resourceId的channelId时崩溃了。从文档中我了解到 channelId 应该在那里,因为 resourceId 的类型是 youtube#channel。channelId 当然可以从我也打印的 result.identifier 字符串中解析出来,但是由于 channelId 有一个属性,我更喜欢使用它。
关于我的代码有什么问题的任何想法?