【发布时间】:2015-01-05 15:57:43
【问题描述】:
我正在使用以下代码尝试从 iTunes API 获取 trackName。它应该来自此链接,例如: https://itunes.apple.com/search?term=EMINEM&entity=song&limit=3 一直没有返回(标签是空白的,不是因为标签太小)
- (void)pressSearchKey {
NSInteger numberOfResults = 3;
NSString *searchString = self.keyboard.textField.text;
NSString *encodedSearchString = [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *finalSearchString = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?term=%@&entity=song&limit=%ld",searchString,numberOfResults];
NSURL *searchURL = [NSURL URLWithString:finalSearchString];
dispatch_queue_t iTunesQueryQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(iTunesQueryQueue, ^{
NSError *error = nil;
NSData *data = [[NSData alloc] initWithContentsOfURL:searchURL options:NSDataReadingUncached error:&error];
if (data && !error) {
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSArray *array = [JSON objectForKey:@"results"];
NSArray *arrayTracks;
for (NSDictionary *bpDictionary in array) {
arrayTracks = [bpDictionary objectForKey:@"trackName"];
}
dispatch_async(dispatch_get_main_queue(), ^{
self.keyboard.firstLabel.text = [arrayTracks objectAtIndex:1];
});
}
});
}
【问题讨论】:
-
当您记录名为
JSON的字典时,它会输出什么? -
@rebello95 我无法登录,因为这是一个扩展(自定义键盘),但我可以为其设置标签文本。当我做
self.keyboard.firstLabel.text = [JSON objectForKey:@"results"];时,它甚至没有改变文字。而这个self.keyboard.firstLabel.text = [NSString stringWithFormat:@"%@", JSON];只是将标签设为空白 -
尝试在该行上方放置一个断点并检查元素以查看其内容。我假设反序列化失败
-
@rebello95 我无法设置断点,因为这是自定义键盘。
-
@rebello95 你能做一个简单的应用程序(带有标签和按钮),当你按下按钮时上面的代码运行,看看你是否可以复制它?
标签: ios objective-c json api itunes