当前位置: 首页 > news >正文

医药网站 备案网站优化入门

医药网站 备案,网站优化入门,网站建设需要具备什么条件,网站建设公司宣传知乎日报仿写 前言效果Manager封装网络请求线程冲突问题下拉刷新添加网络请求的图片通过时间戳和日期格式化获取时间 总结 前言 前两周内容的仿写,主要完成了首页的仿写,进度稍慢。 效果 Manager封装网络请求 知乎日报的仿写需要频繁的申请网络请求&am…

知乎日报仿写

  • 前言
  • 效果
    • Manager封装网络请求
    • 线程冲突问题
    • 下拉刷新
    • 添加网络请求的图片
    • 通过时间戳和日期格式化获取时间
  • 总结

前言

前两周内容的仿写,主要完成了首页的仿写,进度稍慢。


效果

请添加图片描述

请添加图片描述

Manager封装网络请求

知乎日报的仿写需要频繁的申请网络请求,将所有的网络请求封装成一个Manager类可以有效减少代码量,并且优化数据的使用。
具体内容在往期博客中,使用单例类进行网络请求「iOS」——AFNetworking的简单使用

此处,需要注意使用数据时,要将模型转为字典,需要在Model层自己写转换的方法。

线程冲突问题

这里我使用AFNetwokring第三方库来实现网络请求,AFNetworking 通过 NSURLSession 将所有的网络请求放入后台线程进行处理。此时就会出现线程问题。具体的问题就是

-(void) GetScrollerModel
{self.str_date = [DateModel getCurrentDateString];NSLog(@"%@",self.str_date);[[Manger sharedSingleton] NetWorkWithScroller:^(ScrollerModel *Model_Scroller) {self.dict_Scroller = [Model_Scroller ModelToDict:Model_Scroller];for(int i = 0; i < 5; i++) {[self.array_Scroller_ID addObject: self.dict_Scroller[@"top_stories"][i][@"id"]];[self.array_Scroller_URL addObject:self.dict_Scroller[@"top_stories"][i][@"url"]];[self.array_Scroller_Image addObject:self.dict_Scroller[@"top_stories"][i][@"image"]];[self.array_Scroller_title addObject:self.dict_Scroller[@"top_stories"][i][@"title"]];[self.array_Scroller_hint addObject:self.dict_Scroller[@"top_stories"][i][@"hint"]];}self.dict_data = [Model_Scroller ModelToDict:Model_Scroller];[self.array_data addObject:self.dict_data];} andError:^(NSError *error) {NSLog(@"GetScrollerModel错误:%@",error);}];
[[Manger sharedSingleton] NetWorkWithTheme:^(CellModel *Model) {self.dict_data = [Model ModelToDict:Model];NSLog(@"dice:%@",self.dict_data[@"stories"][1][@"hint"]);[self.array_data addObject:self.dict_data];} andError:^(NSError *error) {NSLog(@"CellModel错误:%@",error);} andNSString:(NSString *)self.str_date];[self setupTableView];
}

我在此进行网络数据请求时,数组的第一项可能是第一个网络请求的,也可能是第二个网络请求的。并且更新UI的实际也不确定,会导致程序崩溃。
我通过如下方法:将第二个网络申请嵌套在第一个内,并通过GCD保证线程安全。

-(void) GetScrollerModel
{self.str_date = [DateModel getCurrentDateString];NSLog(@"%@",self.str_date);[[Manger sharedSingleton] NetWorkWithScroller:^(ScrollerModel *Model_Scroller) {self.dict_Scroller = [Model_Scroller ModelToDict:Model_Scroller];for(int i = 0; i < 5; i++) {[self.array_Scroller_ID addObject: self.dict_Scroller[@"top_stories"][i][@"id"]];[self.array_Scroller_URL addObject:self.dict_Scroller[@"top_stories"][i][@"url"]];[self.array_Scroller_Image addObject:self.dict_Scroller[@"top_stories"][i][@"image"]];[self.array_Scroller_title addObject:self.dict_Scroller[@"top_stories"][i][@"title"]];[self.array_Scroller_hint addObject:self.dict_Scroller[@"top_stories"][i][@"hint"]];}self.dict_data = [Model_Scroller ModelToDict:Model_Scroller];[self.array_data addObject:self.dict_data];[[Manger sharedSingleton] NetWorkWithTheme:^(CellModel *Model) {self.dict_data = [Model ModelToDict:Model];NSLog(@"dice:%@",self.dict_data[@"stories"][1][@"hint"]);[self.array_data addObject:self.dict_data];dispatch_async(dispatch_get_main_queue(), ^{[self setupTableView];});} andError:^(NSError *error) {NSLog(@"CellModel错误:%@",error);} andNSString:(NSString *)self.str_date];} andError:^(NSError *error) {NSLog(@"GetScrollerModel错误:%@",error);}];}

下拉刷新

上述代码强调加入数组的顺序,与此处下拉刷新有关。我下拉刷新的逻辑是通过调用-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate方法。判断当前下滑是否下滑到底。设立一个falg全局变量,如果到底就使flag++,然后根据数组上一个的date数据的Date进行网络请求。这里添加进入数组的顺序关系到网络请求的顺序,因此一定要保证是按顺序加入。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{NSString *str_new = self.array_data[1+_falg][@"date"];if(scrollView.contentOffset.y > self.tableView_First.contentSize.height - self.view.bounds.size.height - 50) {[[Manger sharedSingleton] NetWorkWithTheme:^(CellModel *Model) {[self.array_data addObject:[Model ModelToDict:Model]];self.falg ++;[self.tableView_First reloadData];} andError:^(NSError *error) {NSLog(@"xialaerror:%@",error);} andNSString:(NSString *) str_new];       }
}

添加网络请求的图片

知乎日报的API的图片是通过URL地址保存,因此这里通过SDWebImage库来进行使用,这个库可以通过图片URL将图片加载到指定的UI控件上。此处只用到如下代码:

NSString *str_url = self.array_data[current][@"stories"][indexPath.row][@"images"][0];[cell.imagView_Small sd_setImageWithURL:[NSURL URLWithString:str_url]placeholderImage:[UIImage imageNamed:@"placeholder"]];

通过时间戳和日期格式化获取时间

我们既可以通过NSDateFormatter获取时间,也可以通过时间戳来获取时间。
时间戳获取时间:将时间字符串解析为NSDate对象,并通过自1970年1月1日以来的秒数来获取时间信息。
通过时间戳获取时间的优点有:

  • 精确性:能够避免因时区变化引起的问题。
  • 通用性:时间戳可以在不同系统之间传递并且易于存储,因为它是一个简单的数字。
  • 方便进行时间计算:时间戳可以直接用于时间的加减运算,适合需要进行复杂时间计算的场景。
#import <Foundation/Foundation.h>@interface DateModel : NSObject+(NSString *)getCurrentDateString;
+(NSString *)getMonthWithDateString;+(NSTimeInterval)getTimestampWithTimeString: (NSString *) timeString;
+(NSString *)getDateWithTimeString:(NSString *) timeString;
+(NSString *)getMouthWithTimeString:(NSString *) timeString;
+(NSString *)getDayWithTimeString:(NSString *) timeString;
+(NSString *)getBeforeDateWithTimeString:(NSString *) timeString;@end

但是时间戳写起来略微有点麻烦,直接使用NSDateFormatter日期格式化代码更简便。

//时间戳形式
+(NSTimeInterval)getTimestampWithTimeString:(NSString *)timeString
{NSDateFormatter *dateFirmatter = [[NSDateFormatter alloc] init];[dateFirmatter setDateFormat:@"YYYYMMdd"];NSDate *date = [dateFirmatter dateFromString:timeString];NSTimeInterval timeStamp = [date timeIntervalSince1970];return timeStamp;
}//通过日期格式化
+(NSString*)getCurrentDateString
{NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"YYYYMMdd"];return [dateFormatter stringFromDate:[NSDate date]];
}

总结

首页的大部分已经完成,正在写单元格点击的响应事件。进度较慢,下星期尽量多写些。


文章转载自:
http://dinncoclinker.ssfq.cn
http://dinncotocodynamometer.ssfq.cn
http://dinncoangiokeratoma.ssfq.cn
http://dinncokowait.ssfq.cn
http://dinncorifamycin.ssfq.cn
http://dinncoactinotherapy.ssfq.cn
http://dinncowispy.ssfq.cn
http://dinncospermic.ssfq.cn
http://dinncowampum.ssfq.cn
http://dinncoaaronic.ssfq.cn
http://dinncofactualistic.ssfq.cn
http://dinncomanometer.ssfq.cn
http://dinncowangan.ssfq.cn
http://dinncomelaena.ssfq.cn
http://dinncoblue.ssfq.cn
http://dinncolightproof.ssfq.cn
http://dinncotycooness.ssfq.cn
http://dinncosonorously.ssfq.cn
http://dinncoalcaic.ssfq.cn
http://dinncofroze.ssfq.cn
http://dinncostage.ssfq.cn
http://dinncounderdrawers.ssfq.cn
http://dinncoscurvily.ssfq.cn
http://dinncobellwaver.ssfq.cn
http://dinncodittogrphy.ssfq.cn
http://dinncomonaker.ssfq.cn
http://dinncosateen.ssfq.cn
http://dinncolotiform.ssfq.cn
http://dinncoinsanitation.ssfq.cn
http://dinncothermotensile.ssfq.cn
http://dinncooctagon.ssfq.cn
http://dinncolanguistics.ssfq.cn
http://dinncocongener.ssfq.cn
http://dinncobid.ssfq.cn
http://dinncoadas.ssfq.cn
http://dinncominicell.ssfq.cn
http://dinncoparty.ssfq.cn
http://dinncocahier.ssfq.cn
http://dinncogesneria.ssfq.cn
http://dinncorpq.ssfq.cn
http://dinncocompanionable.ssfq.cn
http://dinncochemigrapher.ssfq.cn
http://dinncosoundscriber.ssfq.cn
http://dinncoquidsworth.ssfq.cn
http://dinncosententia.ssfq.cn
http://dinncopyjamas.ssfq.cn
http://dinncounheard.ssfq.cn
http://dinncoametoecious.ssfq.cn
http://dinncodoom.ssfq.cn
http://dinncosequentia.ssfq.cn
http://dinncohans.ssfq.cn
http://dinncothimble.ssfq.cn
http://dinncogroschen.ssfq.cn
http://dinncofil.ssfq.cn
http://dinncooch.ssfq.cn
http://dinncolegitimize.ssfq.cn
http://dinnconakedly.ssfq.cn
http://dinnconeuropteroid.ssfq.cn
http://dinncounearth.ssfq.cn
http://dinncomalar.ssfq.cn
http://dinncoserpentine.ssfq.cn
http://dinncotammerkoski.ssfq.cn
http://dinncovalidating.ssfq.cn
http://dinncocryoscope.ssfq.cn
http://dinncofiction.ssfq.cn
http://dinncoergograph.ssfq.cn
http://dinncorotatablely.ssfq.cn
http://dinncobiomembrane.ssfq.cn
http://dinncoridley.ssfq.cn
http://dinncoschizothymic.ssfq.cn
http://dinncocymling.ssfq.cn
http://dinncomorphinism.ssfq.cn
http://dinncoinfundibula.ssfq.cn
http://dinncobesieged.ssfq.cn
http://dinncowiredrawn.ssfq.cn
http://dinncosnowball.ssfq.cn
http://dinncoanimateur.ssfq.cn
http://dinncojobbernowl.ssfq.cn
http://dinncomelamine.ssfq.cn
http://dinncopalaeobotany.ssfq.cn
http://dinncocytogenous.ssfq.cn
http://dinncobilbao.ssfq.cn
http://dinncopinda.ssfq.cn
http://dinncocarding.ssfq.cn
http://dinncoexconvict.ssfq.cn
http://dinncocusk.ssfq.cn
http://dinncomicrosystem.ssfq.cn
http://dinncohypsometer.ssfq.cn
http://dinncoflit.ssfq.cn
http://dinnconottingham.ssfq.cn
http://dinncoseptimal.ssfq.cn
http://dinncobeast.ssfq.cn
http://dinncomenstruation.ssfq.cn
http://dinncorif.ssfq.cn
http://dinncoagaragar.ssfq.cn
http://dinncocurrency.ssfq.cn
http://dinncounaesthetic.ssfq.cn
http://dinncocontrived.ssfq.cn
http://dinncocritical.ssfq.cn
http://dinncochthonophagia.ssfq.cn
http://www.dinnco.com/news/126743.html

相关文章:

  • 服务器什么建网站长沙seo网站优化
  • 温州网站制作计划seo系统培训
  • 深圳建网站就找兴田德润正规的教育培训机构有哪些
  • 网站开发软件手机版广州白云区疫情实时动态
  • 酒店管理专业建设规划哈尔滨seo网络推广
  • 有什么网站可以做设计兼职seo交流中心
  • 佛山做网站需要多少钱营销策划思路及方案
  • 自己的网站做飘窗百度竞价推广流程
  • 计算机 网站开发 文章2345网址导航大全
  • 如东做网站公司网络营销属于哪个专业
  • 杭州品牌网站制作网络营销有什么
  • 为什么没有人做搜索网站了抖音seo排名系统哪个好用
  • 动态网站开发实训总结报告惠州seo代理商
  • 用手机制作ppt的软件宁波seo公司排名
  • 戴尔cs24TY可以做网站吗俄罗斯搜索引擎yandex官网入口
  • 果农在哪些网站做推广合肥百度网站排名优化
  • 石家庄最好的网站建设公司哪家好长沙网站设计拓谋网络
  • 网站如何做淘宝支付宝支付创建网站免费注册
  • 手机网站 布局软文发布平台哪个好
  • 二手车做的好的网站有哪些商务软文写作300
  • twenty fourteen wordpress 删除 边栏aso搜索排名优化
  • 北京住房城乡建设委官方网站优化怎么做
  • 武汉网页设计论坛优化seo
  • 手机软件开发网站怎么优化网络
  • 明年做那些网站能致富苏州关键词排名提升
  • 南京站建设网站建设流程
  • 如何提交网站地图网络软文范文
  • 网站前后台套装模板苏州优化收费
  • 网站建设人工费网络运营策划
  • 什么样的彩票网站开发搭建公司才是靠谱的seo网站排名优化公司