cell業(yè)務(wù)邏輯處理(時(shí)間格式化)

一.點(diǎn)擊更多按鈕

1.項(xiàng)目需求
點(diǎn)擊更多按鈕,從底部彈出一個(gè)框

t'p

2.怎么從底部彈出一個(gè)框?
兩種方法:
一種用 UIActionSheet
另一種用 UIAlertController

2.1 使用UIActionSheet
好處: 不需要控制器,直接就能使用
缺點(diǎn): 方法過期了,監(jiān)聽按鈕的點(diǎn)擊比較麻煩

 源代碼:
// 以后只要發(fā)現(xiàn)有可變參數(shù),最后一定要添加nil
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"收藏",@"舉報(bào)",nil];

[sheet showInView:self];

2.2 使用UIAlertController
好處:能方法監(jiān)聽按鈕的點(diǎn)擊
缺點(diǎn):代碼要寫很多,依賴控制器(需要控制器modal出來)

2.3 使用UIAlertController需要使用通知,通知最近的控制器把UIAlertController modal出來
注意:使用通知,當(dāng)控制器銷毀的時(shí)候,一定要移除通知

2.4 為什么使用通知,不使用代理?
通知可以跨級(jí)傳遞消息
代理,一般是上下級(jí)來傳遞消息

3.怎么能快速拿到一個(gè)控制器?
全局有一個(gè)單例 UIApplication,通過這個(gè)單例我們能拿到窗口的跟控制器

  // 以后只要想快速拿控制器,拿窗口根控制器
[UIApplication sharedApplication].keyWindow.rootViewController;

二.發(fā)布帖子的時(shí)間處理

1.時(shí)間處理的業(yè)務(wù)邏輯分析

1.1先判斷是否是今年的帖子,如果不是今年,就顯示 2015-08-06 21:10:08 這種格式

1.2如果是今年,在判斷是否是今天,如果是今天 在判斷有沒有超過一個(gè)小時(shí),超過一個(gè)小時(shí) 就顯示 多少小時(shí)前 這種格式

1.3如果不超過一小時(shí),判斷有沒有超過2分鐘 超過兩分鐘 就顯示 多少分鐘前 這種格式

1.4 如果不超過兩分鐘,就顯示 剛剛 這種格式

1.5 如果時(shí)間超過一天,在判斷有沒有超過一天 如果沒有 就顯示 昨天 21:10這種格式

1.6 如果時(shí)間超過一天 就顯示 08-05 21:10:08這種格式

2.由于業(yè)務(wù)邏輯非常深,寫代碼的時(shí)候,容易搞混,怎么處理?

 我們可以采取先寫偽代碼,理清思路,再轉(zhuǎn)換為真實(shí)代碼
 什么是偽代碼:偽代碼就是中文和代碼的結(jié)合寫出來的代碼

偽代碼示例
 // 處理時(shí)間(用帖子發(fā)布時(shí)間與當(dāng)前時(shí)間比較)
if (今年) {
    if (今天) {

        if (大于1小時(shí)) {

        } else if (大于2分鐘) {

        } else { // 剛剛

        }

    } else if (昨天) {

    } else { // 昨天之前

    }

} else{ // 非今年

}

3.怎么獲取時(shí)間差值?

3.1 先把字符串對(duì)象的日期轉(zhuǎn)換成 日期對(duì)象的日期格式
3.1.1 獲取 NSDateFormatter對(duì)象,用來 NSStreing與NSDate互轉(zhuǎn)
3.1.2 設(shè)置日期格式(轉(zhuǎn)換成什么格式的日期)
3.1.3 把字符串日期, 轉(zhuǎn)換成特定格式的日期

4.判斷是否是今年

4.1 怎么判斷?
判斷年份是否相同

4.2 怎么獲取日期年份,或月份,等等?
可以通過日歷類來拿到日期組件,就可以獲得年,月日和時(shí)分秒了

處理日期格式原碼

// 1.把帖子發(fā)布時(shí)間字符串轉(zhuǎn)換成(NSDate)日期對(duì)象 => NSDateFormatter
// NSDateFormatter:NSStreing與NSDate互轉(zhuǎn)
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 設(shè)置格式
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// 發(fā)布日期對(duì)象
NSDate *createDate = [fmt dateFromString:item.create_time];

// 獲取日歷類對(duì)象
 // NSCalendar *calendar = [NSCalendar currentCalendar];
// 獲取日期組件
 // NSDateComponents *cmp = [calendar components:NSCalendarUnitHour | NSCalendarUnitMinute  fromDate:createDate toDate:[NSDate date] options:NSCalendarWrapComponents];

NSString *timeStr = item.create_time;
if ([createDate isThisYear]) {
    if ([createDate isThisToday]) {

        // 獲取日期差值
        if (cmp.hour >= 1) {
            timeStr = [NSString stringWithFormat:@"%ld小時(shí)前",cmp.hour];
        } else if (cmp.minute >= 2) {
            timeStr = [NSString stringWithFormat:@"%ld分鐘前",cmp.minute];
        } else { // 剛剛
            timeStr = @"剛剛";
        }
    } else if ([createDate isThisYesterday]) { // 昨天
        // 昨天 21:10
        fmt.dateFormat = @"昨天 HH:mm";
        timeStr = [fmt stringFromDate:createDate];

    } else { // 昨天之前 08-05 21:10:08
        fmt.dateFormat = @"MM-dd HH:mm:ss";
        timeStr = [fmt stringFromDate:createDate];
    }
}

因?yàn)榕袛嗳掌谝S?我們就把判斷方法抽取到NSDate的分類

- (BOOL)isThisYear
{
// 獲取當(dāng)前日期對(duì)象
NSDate *curDate = [NSDate date];
// 獲取日歷類
NSCalendar *curCalendar = [NSCalendar currentCalendar];
// 獲取自己日期組件(年,月,等)   self代碼外面調(diào)用這個(gè)方法的日歷類(也就是createDate)
NSDateComponents *selfCmp = [curCalendar components:NSCalendarUnitYear fromDate:self];
// 獲取當(dāng)前時(shí)間日期組件(年,月,等)
NSDateComponents *curCmp = [curCalendar components:NSCalendarUnitYear fromDate:curDate];
return  curCmp.year == selfCmp.year;
}

// 判斷是否是今天
- (BOOL)isThisToday
{
// 獲取日歷類
NSCalendar *curCalendar = [NSCalendar currentCalendar];
return [curCalendar isDateInToday:self];
}

- (BOOL)isThisYesterday
{
NSCalendar *curCalendar = [NSCalendar currentCalendar];
return [curCalendar isDateInYesterday:self];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末双妨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叮阅,更是在濱河造成了極大的恐慌刁品,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浩姥,死亡現(xiàn)場(chǎng)離奇詭異哑诊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)及刻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門镀裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竞阐,“玉大人,你說我怎么就攤上這事暑劝÷嬗ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵担猛,是天一觀的道長(zhǎng)幕垦。 經(jīng)常有香客問我,道長(zhǎng)傅联,這世上最難降的妖魔是什么先改? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蒸走,結(jié)果婚禮上仇奶,老公的妹妹穿的比我還像新娘。我一直安慰自己比驻,他們只是感情好该溯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著别惦,像睡著了一般狈茉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掸掸,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天氯庆,我揣著相機(jī)與錄音,去河邊找鬼扰付。 笑死点晴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼娃惯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼简卧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起族跛,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤闰挡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后礁哄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體长酗,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年桐绒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夺脾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片之拨。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咧叭,靈堂內(nèi)的尸體忽然破棺而出蚀乔,到底是詐尸還是另有隱情,我是刑警寧澤菲茬,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布吉挣,位于F島的核電站,受9級(jí)特大地震影響婉弹,放射性物質(zhì)發(fā)生泄漏睬魂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一镀赌、第九天 我趴在偏房一處隱蔽的房頂上張望氯哮。 院中可真熱鬧,春花似錦佩脊、人聲如沸蛙粘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽出牧。三九已至,卻和暖如春歇盼,著一層夾襖步出監(jiān)牢的瞬間舔痕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工豹缀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伯复,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓邢笙,卻偏偏與公主長(zhǎng)得像啸如,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氮惯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫叮雳、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,104評(píng)論 4 62
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,974評(píng)論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理妇汗,服務(wù)發(fā)現(xiàn)帘不,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 陳凡還跟我們說杨箭,這起案子寞焙,恐怕真的是云清做的,否則云清不應(yīng)該在這個(gè)時(shí)候不見蹤影。陳凡告訴我們捣郊,警方去云清的新住宅辽狈,...
    蒼新閱讀 626評(píng)論 4 4
  • 他一直就有一個(gè)穿上綠軍裝保家衛(wèi)國(guó)的宏偉理想∧K可由于種種原因稻艰,一直到他成為了一個(gè)父親的時(shí)候,他的理想也未能實(shí)...
    蒹葭essay閱讀 254評(píng)論 0 0