//
// ViewController.m // xiazai //
// Copyright © 2016年 asamu. All rights reserved. //
#import "ViewController.h"
@interface ViewController ()<NSURLConnectionDataDelegate> { NSMutableData *_data;//响应数据
UITextField *_textField; UIButton *_button; UIProgressView *_progressView; UILabel *_label; long long _totalLength; NSDictionary *_musicDic; } @end
@implementation ViewController #pragma mark -- UI方法
- (void)viewDidLoad { [super viewDidLoad]; [self analysisJson]; [self layoutUI]; } #pragma mark -- 私有方法
#pragma mark 解析 JSON
-(void)analysisJson{ NSError *error; NSString *str = @"http://douban.fm/j/mine/playlist?channel=3"; NSURL *url = [NSURL URLWithString:str]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSDictionary *musicDic = [[NSDictionary alloc]init]; //遍历字典 取出 key - @"song"
for (musicDic in dic[@"song"]) { _musicDic = musicDic; } } #pragma mark 界面布局
-(void)layoutUI{ //地址栏
_textField = [[UITextField alloc]initWithFrame:CGRectMake(10, 50, 300, 25)]; //加圆角和边框
_textField.layer.cornerRadius = 3.0f; _textField.layer.borderWidth = 0.5f; _textField.textColor = [UIColor redColor]; /* 解析的 JOSN 中的 歌曲名加上 .mp3 的后缀 这个名字就是存储在沙盒中的名字,所以要加 .mp3 由于名称不一样,所以不会覆盖 */ NSString *musicName = [_musicDic[@"title"] stringByAppendingString:@".mp3"]; _textField.text = musicName; [_textField sizeToFit]; [self.view addSubview:_textField]; //进度条
_progressView = [[UIProgressView alloc]initWithFrame:CGRectMake(10, 100, 300, 25)]; [self.view addSubview:_progressView]; //状态显示
_label = [[UILabel alloc]initWithFrame:CGRectMake(10, 130, 300, 25)]; _label.textColor = [UIColor colorWithRed:0 green:146/255.0 blue:1.0 alpha:1.0]; [self.view addSubview:_label]; //下载按钮
_button = [[UIButton alloc]initWithFrame:CGRectMake(10, 500, 300, 25)]; [_button setTitle:@"下载" forState:UIControlStateNormal]; [_button setTitleColor:[UIColor colorWithRed:0 green:146/255.0 blue:1.0 alpha:1.0] forState:UIControlStateNormal]; [_button addTarget:self action:@selector(sendRequest) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_button]; } #pragma mark -- 更新进度
-(void)updateProgress{ if (_data.length == _totalLength) { _label.text = @"Finish downloaded"; }else{ _label.text = @"downing..."; [_progressView setProgress:(float)_data.length/_totalLength]; } } #pragma mark -- 发送请求
-(void)sendRequest{ NSLog(@"begin"); NSString *urlStr = [NSString stringWithFormat:_musicDic[@"url"],_textField.text]; //解码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // 创建 URL 链接
NSURL *url = [NSURL URLWithString:urlStr]; //创建请求
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeo