我有一个流式传输链接的音频播放器,我想通过JSON将链接加载到tableView中。
继承我的tableView,显示链接:(已经过评论,但没有json工作)
/*
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
int row = indexPath.row;
[[cell textLabel] setText:[_radioNames objectAtIndex:row]];
[[cell detailTextLabel] setText:[_radioSubtitles objectAtIndex:row]];
if(row == _currentRadio) {
[cell setAccessoryView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"now_playing.png"]] autorelease]];
} else {
[cell setAccessoryView:nil];
}
return cell;
}
*/
下面是我获取JSON文件的地方:
// Download JSON
NSString *jsonString = [NSString
stringWithContentsOfURL:[NSURL URLWithString:@"http://www.xxxxxxxxx/radioliste.json"]
encoding:NSStringEncodingConversionAllowLossy
error:nil];
// Create parser
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *results = [parser objectWithString:jsonString error:nil];
[parser release], parser = nil;
// Set tableData
[self setTableData:[results objectForKey:@"items"]];
NSLog(jsonString); // THIS IS SHOWING ME THE WHOLE JSON FILE, DON'T KNOW IF THAT OK?
继承JSON数据主义者:(或者我认为)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// Change UITableViewCellStyle
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
}
// Get item from tableData
NSDictionary *item = [tableData objectAtIndex:[indexPath row]];
// Set text on textLabel
[[cell textLabel] setText:[item objectForKey:@"title"]];
// Set text on detailTextLabel
[[cell detailTextLabel] setText:[item objectForKey:@"description"]];
return cell;
}
继承我的JSON文件:
{
"radioliste": {
"items": [
{
"id": "The Voice",
"string": "Afspil The Voice",
"string": "LINK"
}
]
}
}
所以继续我的问题......如何从JSON文件中加载正确的流链接并将它们解析为tableView?并且JSON文件是否有效?
答案 0 :(得分:1)
如何使用这样的原生JSON库:
NSData* data = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil];
和
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:(__bridge NSData *)data options:NSJSONReadingMutableContainers error:nil];
而不是SBJSON?
编辑:刚刚注意到你的JSON存在一些问题。字典中有一个重复的键:string。答案 1 :(得分:1)
首先,不要使用initWithContentsOfURL ...这是一个阻止调用,会冻结你的应用程序。在异步模式下使用NSURLConnection从网络获取数据。
其次,NSJSONSerialization自iOS 5开始提供。使用它。
因此,NSURLConnection将构建一个NSData。 NSJSONSerialization JSONObjectWithData:将该NSData转换为对象。在您的情况下,它将是一个NSDictionary。
您粘贴的JSON文件与您在cellForRowAtIndexPath中使用的对象键名称不匹配。我不确定会发生什么,因为第一项中的两个键是“string”。但假设你的意思是冠军和描述,你可以使用类似的东西:
cell.textLabel.text = tableData[@"items"][indexPath.row][@"title"];
将标题输入表格单元格。