網路解析(OC_UI)
ViewController.m
#import "ViewController.h"
#import "Song.h"
@interface ViewController ()
<
UITableViewDataSource,
UITableViewDelegate
>
@property(nonatomic,retain)NSMutableArray *songArray;
@property (nonatomic,retain)UITableView *tableView;
@property (nonatomic,assign)NSInteger pageNumber;
@property (nonatomic,assign)BOOL isRefresh;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.pageNumber = 1;
self.songArray = [[NSMutableArray alloc] init];
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
tableView.dataSource = self;
tableView.delegate = self;
[self.view addSubview:tableView];
self.tableView = tableView;
NSString *URLString = @"http://172.18.26.196/get.php?page=1";
[self getDataWithURLString:URLString];
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
CGFloat offsety = scrollView.contentOffset.y;
CGFloat contentHeight = scrollView.contentSize.height;
if (contentHeight <= scrollView.frame.size.height) {
contentHeight = scrollView.frame.size.height;
}
if (offsety >= contentHeight - scrollView.frame.size.height + 50) {
self.isRefresh = NO;
self.pageNumber++;
NSString *URLString = [NSString stringWithFormat:@"http://172.18.26.196/get.php?page=%ld",self.pageNumber];
[self getDataWithURLString:URLString];
}else if (offsety <= -80.f){
self.isRefresh = YES;
self.pageNumber = 1;
NSString *URLString = [NSString stringWithFormat:@"http://172.18.26.196/get.php?page=%ld",self.pageNumber];
[self getDataWithURLString:URLString];
}
NSLog(@"%lf",offsety) ;
}
- (void)getDataWithURLString:(NSString *)URLString{
NSURL *url = [NSURL URLWithString:URLString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//非同步 主執行緒
dispatch_async(dispatch_get_main_queue(), ^{
if (self.isRefresh == YES) {
[self.songArray removeAllObjects];
}
if (!error) {
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"result:%@",result);
for (NSDictionary *songDic in result) {
Song *song = [[Song alloc] init];
[song setValuesForKeysWithDictionary:songDic];
[self.songArray addObject:song];
}
//重新整理tableView
[self.tableView reloadData];
}else{
NSLog(@"error :%@",error);
}
});
}];
[dataTask resume];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.songArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
Song *song = self.songArray[indexPath.row];
static NSString *songId = @"song";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:songId];
if (nil == cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:songId];
}
cell.textLabel.text =song.name;
cell.detailTextLabel.text = song.singerName;
return cell;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Song.h
@property (nonatomic,copy)NSString *name;
@property (nonatomic,copy)NSString *number;
@property (nonatomic,copy)NSString *pic;
@property (nonatomic,copy)NSString *singerName;
@property (nonatomic,copy)NSString *url;
Song.m
- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
這是ios中的網路解析,是非同步的。
PS:(能看懂的大神們自己看吧,如果可以的話隨便交流交流,學渣表示很迷茫啊)
相關文章
- kubernetes網路解析
- vLan網路原理解析
- Docker網路模型深度解析Docker模型
- 網路 - DNS解析過程原理DNS
- 瑪麗·米克爾:“網際網路女皇”解析移動網際網路趨勢
- OKHttp網路請求原理流程解析HTTP
- Flutter網路請求和資料解析Flutter
- Retrofit網路請求原始碼解析原始碼
- Andriod 網路框架 OkHttp 原始碼解析框架HTTP原始碼
- UE4網路模組解析(一)
- 計算機網路知識解析計算機網路
- BitmapFactory 解析網路請求的inputstream
- 路由器網路介面解析大全路由器
- “網際網路+”的多維度解析——資訊圖
- Swift 3 網路請求+資料解析Swift
- Android 網路框架 Retrofit 原始碼解析Android框架原始碼
- ES系列(三):網路通訊模組解析
- PXE高效批量網路裝機的解析
- 網路遊戲的經濟系統解析遊戲
- Retrofit原始碼解析之網路請求原始碼
- 原始碼解析:網路層 YTKNetwork原始碼
- 網路病毒基本入門---概念解析(轉)
- [網路爬蟲] Jsoup : HTML 解析工具爬蟲JSHTML
- Siamese RPN 訓練網路結構解析
- Volley 原始碼解析之網路請求原始碼
- Android 網路框架Retrofit的使用和解析Android框架
- 網路行為審計技術深度解析
- 計算機網路之ip、子網掩碼、網路號、主機號等概念解析計算機網路
- CVPR 2019 | 告別低解析度網路,微軟提出高解析度深度神經網路HRNet微軟神經網路
- 組網布線之網路佈線常見問題解析
- DNS解析是什麼?DNS解析在網路通訊中作用有哪些?DNS
- 卷積神經網路數學原理解析卷積神經網路
- DNS解析(網路切換的問題解決)DNS
- 三國殺之無線網路安全解析
- Android okHttp網路請求之Json解析AndroidHTTPJSON
- 解析Linux網路分析的三大利器(轉)Linux
- 交換機網路安全策略全方位解析(轉)
- linux網路知識:解析路由表(轉)Linux路由