服务器返回数据
服务器返回数据往往是一整串时间, 放在发帖时间label上面太长不好看, 我们需要手动处理一下使其变得美观易读.
代码
Date+Category 封装
需要处理服务器返回一大段时间, 我们需要比较现在时间和发帖时间
首先利用日期格式化类NSDateFormatter
去格式化服务器返回的一长串时间字符串.
1 | //日期格式化类 |
如果直接将以上代码放在cell里面读取会使cell里setModel方法显得冗长, 不美观, 我选择将它们封装起来. 为了便于其他人维护, 不再新建一类, 直接用date+category增加方法.
在date+category方法中自己写入方法:- (NSDateComponents *)zyn_deltaFromDateString:(NSString *)dateString withDateFormat:(NSString *)dateFormat;
然后实现
1 | /** |
时间判断
在求出时间差值以后, 需要自己对时间进行判断, 做条件的话, 封装BOOL方法比较适合, 需要做时间判断的个人认为只需要做今年以内的时间判断就好了, 之前的时间, 去年, 前年, 大前年, 这种完全没必要.
同样是在date类目中
今年?
1 | - (BOOL)isCurrentYear { |
今天?
1 | - (BOOL)isToday { |
昨天?
1 | - (BOOL)isYesterday { |
OK, 时间类目封装完毕, 需要在cell的label上显示时间了.
同样判断时间需要很长的代码, 写在cell上过于冗长, 影响美观, 既然label.text是字符串, 那么我们就在string+category中完成这些判断即可.
string+category封装
直接上代码了, 逻辑就不细说了, 反正先从大时间开始判断就行了
1 |
|
String类目封装完事, 接下来就是在cell上显示了, model和cell中代码会非常简单
model和cell中的代码
在pch文件中引入上面的头文件
model中代码
1 |
|
cell中代码
在setModel方法中:self.timeLabel.text = self.homeModel.createTime;
即可, 不用出现任何逻辑判断