cell商務邏輯處理(時間格式化),cell業務

來源:互聯網
上載者:User

cell商務邏輯處理(時間格式化),cell業務

一.點擊更多按鈕1.項目需求     點擊更多按鈕,從底部彈出一個框 

 

2.怎麼從底部彈出一個框?          兩種方法:                一種用 UIActionSheet          另一種用 UIAlertController          2.1 使用UIActionSheet          好處: 不需要控制器,直接就能使用          缺點: 方法到期了,監聽按鈕的點擊比較麻煩      原始碼:// 以後只要發現有可變參數,最後一定要添加nilUIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"收藏",@"舉報",nil]; [sheet showInView:self];      2.2 使用UIAlertController          好處:能方法監聽按鈕的點擊          缺點:代碼要寫很多,依賴控制器(需要控制器modal出來)          2.3 使用UIAlertController需要使用通知,通知最近的控制器把UIAlertController   modal出來          注意:使用通知,當控制器銷毀的時候,一定要移除通知          2.4 為什麼使用通知,不使用代理?          通知可以跨級傳遞訊息          代理,一般是上下級來傳遞訊息          3.怎麼能快速拿到一個控制器?     全域有一個單例 UIApplication,通過這個單例我們能拿到視窗的跟控制器      // 以後只要想快速拿控制器,拿視窗根控制器    [UIApplication sharedApplication].keyWindow.rootViewController; 二.發布文章的時間處理 1.時間處理的商務邏輯分析     1.1先判斷是否是今年的文章,如果不是今年,就顯示  2015-08-06 21:10:08 這種格式      1.2如果是今年,在判斷是否是今天,如果是今天   在判斷有沒有超過一個小時,超過一個小時 就顯示 多少小時前 這種格式      1.3如果不超過一小時,判斷有沒有超過2分鐘 超過兩分鐘 就顯示  多少分鐘前 這種格式      1.4 如果不超過兩分鐘,就顯示 剛剛  這種格式      1.5 如果時間超過一天,在判斷有沒有超過一天 如果沒有 就顯示  昨天 21:10這種格式      1.6 如果時間超過一天 就顯示  08-05 21:10:08這種格式 2.由於商務邏輯非常深,寫代碼的時候,容易搞混,怎麼處理?     我們可以採取先寫虛擬碼,理清思路,再轉換為真實代碼     什麼是虛擬碼:虛擬碼就是中文和代碼的結合寫出來的代碼 虛擬碼執行個體 // 處理時間(用文章發布時間與目前時間比較)
    if (今年) {
        if (今天) {
           
            if (大於1小時) {
               
            } else if (大於2分鐘) {
               
            } else { // 剛剛
               
            }
           
        } else if (昨天) {
           
        } else { // 昨天之前
           
        }
       
    } else{ // 非今年
           } 3.怎麼擷取時間差值?     3.1 先把字串對象的日期轉換成 日期對象的日期格式          3.1.1 擷取 NSDateFormatter對象,用來 NSStreing與NSDate互轉          3.1.2 設定日期格式(轉換成什麼格式的日期)          3.1.3 把字串日期, 轉換成特定格式的日期 4.判斷是否是今年     4.1 怎麼判斷?          判斷年份是否相同      4.2 怎麼擷取日期年份,或月份,等等?          可以通過日曆類來拿到日期組件,就可以獲得年,月日和時分秒了 處理日期格式原碼    
 1  // 1.把文章發布時間字串轉換成(NSDate)日期對象 => NSDateFormatter 2     // NSDateFormatter:NSStreing與NSDate互轉 3     NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; 4     // 設定格式 5     fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 6     // 發布日期對象 7     NSDate *createDate = [fmt dateFromString:item.create_time]; 8      9     // 擷取日曆類對象10    // NSCalendar *calendar = [NSCalendar currentCalendar];11     // 擷取日期組件12    // NSDateComponents *cmp = [calendar components:NSCalendarUnitHour | NSCalendarUnitMinute  fromDate:createDate toDate:[NSDate date] options:NSCalendarWrapComponents];13   14     NSString *timeStr = item.create_time;15     if ([createDate isThisYear]) { 16         if ([createDate isThisToday]) {17            18             // 擷取日期差值19             if (cmp.hour >= 1) {20                 timeStr = [NSString stringWithFormat:@"%ld小時前",cmp.hour];21             } else if (cmp.minute >= 2) {22                 timeStr = [NSString stringWithFormat:@"%ld分鐘前",cmp.minute];23             } else { // 剛剛24                 timeStr = @"剛剛";25             }   26         } else if ([createDate isThisYesterday]) { // 昨天27             // 昨天 21:1028             fmt.dateFormat = @"昨天 HH:mm";29             timeStr = [fmt stringFromDate:createDate];30    31         } else { // 昨天之前 08-05 21:10:0832             fmt.dateFormat = @"MM-dd HH:mm:ss";33             timeStr = [fmt stringFromDate:createDate];34         }35     }36  37 因為判斷日期要常用,我們就把判斷方法抽取到NSDate的分類38  39 - (BOOL)isThisYear40 {41     // 擷取當前日期對象42     NSDate *curDate = [NSDate date]; 43     // 擷取日曆類44     NSCalendar *curCalendar = [NSCalendar currentCalendar];45     // 擷取自己日期組件(年,月,等)   self代碼外面調用這個方法的日曆類(也就是createDate)46     NSDateComponents *selfCmp = [curCalendar components:NSCalendarUnitYear fromDate:self];47     // 擷取目前時間日期組件(年,月,等)48     NSDateComponents *curCmp = [curCalendar components:NSCalendarUnitYear fromDate:curDate];49     return  curCmp.year == selfCmp.year;50 }51 52 // 判斷是否是今天53 - (BOOL)isThisToday54 {55     // 擷取日曆類56     NSCalendar *curCalendar = [NSCalendar currentCalendar];57     return [curCalendar isDateInToday:self];58 }59 60 - (BOOL)isThisYesterday61 {62     NSCalendar *curCalendar = [NSCalendar currentCalendar];63     return [curCalendar isDateInYesterday:self];64 }

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.