// // EZMessageListViewController.m // EZOpenSDKDemo // // Created by DeJohn Dong on 15/11/3. // Copyright © 2015年 Ezviz. All rights reserved. // #import "EZMessageListViewController.h" #import "MJRefresh.h" #import "DDKit.h" #import "MessageListCell.h" #import "Masonry.h" #import "MBProgressHUD.h" #import "EZMessagePhotoViewController.h" #import "NSDate-Utilities.h" #import "HDLAlarmInfo.h" #import "YYModel.h" #define EZMessageListPageSize 10 @interface EZMessageListViewController () { } @property (nonatomic) BOOL isSelectedAll; @property (nonatomic, strong) NSMutableArray *selectedMessageArray; @property (nonatomic, strong) NSDate *lastDate; @property (nonatomic, strong) NSDate *beginTime; @property (nonatomic, strong) NSDate *endTime; @property (nonatomic) NSInteger totalCount; @property (nonatomic) NSInteger currentIndex; @property (nonatomic, strong) NSMutableArray *messageList; @property (nonatomic, strong) NSDateFormatter *dateFormatter; //@property (nonatomic, strong) NSMutableArray *sections; @property (nonatomic) NSInteger lastIndex; @property (nonatomic, weak) IBOutlet UIImageView *noMessage; @property (nonatomic, weak) IBOutlet UILabel *noMessageLabel; @property (nonatomic, weak) IBOutlet UIBarButtonItem *selectedAll; @property (nonatomic, weak) IBOutlet UIBarButtonItem *deleteSelected; @property (nonatomic, weak) IBOutlet UIBarButtonItem *readAll; @property (nonatomic, strong) IBOutlet UIBarButtonItem *editButton; @end @implementation EZMessageListViewController - (void)dealloc { } - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; self.title = NSLocalizedString(@"dmessage_title", @"消息"); // [EZOPENSDK getUnreadMessageCount:self.deviceInfo.deviceSerial messageType:EZMessageTypeAlarm completion:^(NSInteger count, NSError *error) { // self.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"dmessage_title", @"消息"), (int)count]; // }]; if(!self.messageList) self.messageList = [NSMutableArray new]; // if(!_sections) // _sections = [NSMutableArray new]; // if(!_selectedMessageArray) _selectedMessageArray = [NSMutableArray new]; [self addHeaderRefresh]; //获取过去3天的告警消息,开发者可以自己设置时间范围。 _beginTime = [NSDate dateWithTimeIntervalSinceNow:-3600 * 24 * 7]; _endTime = [NSDate date]; if(!_dateFormatter) _dateFormatter = [[NSDateFormatter alloc] init]; self.navigationItem.rightBarButtonItem = nil; } - (void)viewWillDisappear:(BOOL)animated { if (self.tableView.allowsMultipleSelectionDuringEditing) { [self editTableView:self.navigationItem.rightBarButtonItem]; } [super viewWillDisappear:animated]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.messageList.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // Configure the cell... MessageListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MessageCell" forIndexPath:indexPath]; cell.deviceSerial = self.deviceInfo.deviceSerial; HDLAlarmInfo *info = self.messageList[indexPath.row]; [cell setAlarmInfo:info]; if (tableView.allowsMultipleSelectionDuringEditing == YES) { if([_selectedMessageArray containsObject:info]) { [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; } else { [tableView deselectRowAtIndexPath:indexPath animated:NO]; } } return cell; } // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { HDLAlarmInfo *info = self.messageList[indexPath.row]; if(tableView.allowsMultipleSelectionDuringEditing) { if ([self.selectedMessageArray containsObject:info]) { [self.selectedMessageArray removeObject:info]; } else { [self.selectedMessageArray addObject:info]; } if(self.selectedMessageArray.count > 0) { self.deleteSelected.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"delete", @"删除"),(int)[self.selectedMessageArray count]]; self.deleteSelected.enabled = YES; self.readAll.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"message_read", @"标记已读"),(int)[self.selectedMessageArray count]]; self.readAll.enabled = YES; } else { self.deleteSelected.title = NSLocalizedString(@"delete", @"删除"); self.deleteSelected.enabled = NO; self.readAll.title = NSLocalizedString(@"message_read", @"标记已读"); self.readAll.enabled = NO; } return; } MessageListCell *cell = [tableView cellForRowAtIndexPath:indexPath]; [self performSegueWithIdentifier:@"go2MessagePhoto" sender:@{@"image":cell.actionImageView.image?:[UIImage new], @"alarmInfo":info}]; // [EZOPENSDK getUnreadMessageCount:self.deviceInfo.deviceSerial messageType:EZMessageTypeAlarm completion:^(NSInteger count, NSError *error) { // self.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"dmessage_title", @"消息"), (int)count]; // }]; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { if(tableView.allowsMultipleSelectionDuringEditing) { HDLAlarmInfo *info = self.messageList[indexPath.row];; if ([self.selectedMessageArray containsObject:info]) { [self.selectedMessageArray removeObject:info]; } else { [self.selectedMessageArray addObject:info]; } if(self.selectedMessageArray.count > 0) { self.deleteSelected.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"delete", @"删除"),(int)[self.selectedMessageArray count]]; self.deleteSelected.enabled = YES; self.readAll.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"message_read", @"标记已读"),(int)[self.selectedMessageArray count]]; self.readAll.enabled = YES; } else { self.deleteSelected.title = NSLocalizedString(@"delete", @"删除"); self.deleteSelected.enabled = NO; self.readAll.title = NSLocalizedString(@"message_read", @"标记已读"); self.readAll.enabled = NO; } } } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 75.0f; } //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 20.0f; //} //- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //{ // UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 20)]; // NSString *key = [self.sections dd_objectAtIndex:section][@"date"]; // headerLabel.text = [NSString stringWithFormat:@" %@",[self dateStringWithUserDefine:key]]; // headerLabel.font = [UIFont systemFontOfSize:14.0f]; // headerLabel.backgroundColor = [UIColor dd_hexStringToColor:@"0xf0f0f3"]; // return headerLabel; //} // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source HDLAlarmInfo *info = self.messageList[indexPath.row];; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.labelText = NSLocalizedString(@"message_deleting", @"正在删除,请稍候..."); // [EZOPENSDK deleteAlarm:@[info.alarmId] completion:^(NSError *error) { // [hud hide:YES]; // [self.messageList removeObject:info]; // [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; // }]; __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] deleteAlarmMessage:@[info.ysId] completion:^(ResponseData * responseData) { if (responseData.success) { [hud hide:YES]; [weakSelf.messageList removeObject:info]; [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; }else{ hud.labelText = NSLocalizedString(@"setting_opration_fail", @"操作失败"); hud.mode = MBProgressHUDModeText; [hud hide:YES afterDelay:1.2]; } }]; } } /* // Override to support rearranging the table view. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } */ /* // Override to support conditional rearranging of the table view. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } */ #pragma mark - UIActionSheetDelegate Methods - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if(buttonIndex == 0) { __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.labelText = NSLocalizedString(@"message_deleting", @"正在删除,请稍候..."); NSMutableArray *alarmIds = [NSMutableArray new]; for (int i = 0; i < self.selectedMessageArray.count; i++) { HDLAlarmInfo *info = [self.selectedMessageArray dd_objectAtIndex:i]; [alarmIds addObject:info.ysId]; } // [EZOPENSDK deleteAlarm:alarmIds completion:^(NSError *error) { // if(error) // { // hud.labelText = error.localizedDescription; // hud.mode = MBProgressHUDModeText; // [hud hide:YES afterDelay:1.2]; // } // else // { // [hud hide:YES]; // } // [self.messageList removeObjectsInArray:self.selectedMessageArray]; // [self editTableView:self.navigationItem.rightBarButtonItem]; // if(self.messageList.count > 0){ // [self.tableView reloadData]; // } // else // { // [self.tableView.mj_header beginRefreshing]; // } // }]; __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] deleteAlarmMessage:alarmIds completion:^(ResponseData * responseData) { [hud hide:YES]; if (responseData.success) { [hud hide:YES]; }else{ hud.labelText = NSLocalizedString(@"setting_opration_fail", @"操作失败"); hud.mode = MBProgressHUDModeText; [hud hide:YES afterDelay:1.2]; } [weakSelf.messageList removeObjectsInArray:self.selectedMessageArray]; [weakSelf editTableView:self.navigationItem.rightBarButtonItem]; if(weakSelf.messageList.count > 0){ [weakSelf.tableView reloadData]; } else { [weakSelf.tableView.mj_header beginRefreshing]; } }]; } } #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. NSDictionary *dict = sender; HDLAlarmInfo *info = dict[@"alarmInfo"]; if(!info.isChecked){ // [EZOPENSDK setAlarmStatus:@[info.alarmId] alarmStatus:EZMessageStatusRead completion:^(NSError *error) { // if(!error) // { // info.isChecked = YES; // [self.tableView reloadData]; // } // }]; //标记已读 __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] readAlarmMessage:@[info.ysId] completion:^(ResponseData * responseData) { if(responseData.success){ info.isChecked = YES; [weakSelf.tableView reloadData]; } }]; } EZMessagePhotoViewController *nextVC = [segue destinationViewController]; nextVC.image = dict[@"image"]; nextVC.info = info; nextVC.deviceInfo = self.deviceInfo; } #pragma mark - MJRefresh Methods - (void)addHeaderRefresh { __weak typeof(self) weakSelf = self; self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ weakSelf.currentIndex = 1; [weakSelf.noMessage removeFromSuperview]; [weakSelf.noMessageLabel removeFromSuperview]; // [EZOPENSDK getAlarmList:weakSelf.deviceInfo.deviceSerial // pageIndex:weakSelf.currentIndex++ // pageSize:EZMessageListPageSize // beginTime:weakSelf.beginTime // endTime:weakSelf.endTime //// beginTime:nil //// endTime:nil // completion:^(NSArray *alarmList, NSInteger alarmCount, NSError *error) { // [weakSelf.messageList removeAllObjects]; // [weakSelf.messageList addObjectsFromArray:alarmList]; // weakSelf.totalCount = alarmCount; // if(weakSelf.messageList.count != weakSelf.totalCount) // { // [weakSelf addFooter]; // } // [weakSelf tableViewDidReload:alarmList]; // [weakSelf.tableView.mj_header endRefreshing]; // if(weakSelf.messageList.count > 0) // weakSelf.navigationItem.rightBarButtonItem = self.editButton; // }]; //2021-07-09 1.修改为HDL接口方案 [[EZHttpUtil sharedManager] getAlarmList:weakSelf.deviceInfo.deviceSerial pageNo:weakSelf.currentIndex++ pageSize:EZMessageListPageSize completion:^(ResponseData * responseData) { NSInteger alarmCount = 0; NSArray *alarmList = [NSArray array]; if (responseData.success){ HDLAlarmInfoData *alarmInfoData = [HDLAlarmInfoData yy_modelWithDictionary:responseData.data]; if (alarmInfoData) { alarmCount = alarmInfoData.totalCount; if (alarmInfoData.list) { alarmList = alarmInfoData.list; } } } [weakSelf.messageList removeAllObjects]; [weakSelf.messageList addObjectsFromArray:alarmList]; weakSelf.totalCount = alarmCount; if(weakSelf.messageList.count != weakSelf.totalCount) { [weakSelf addFooter]; } [weakSelf tableViewDidReload]; [weakSelf.tableView.mj_header endRefreshing]; if(weakSelf.messageList.count > 0) weakSelf.navigationItem.rightBarButtonItem = self.editButton; }]; }]; self.tableView.mj_header.automaticallyChangeAlpha = YES; [self.tableView.mj_header beginRefreshing]; } - (void)addFooter { __weak typeof(self) weakSelf = self; self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ // [EZOPENSDK getAlarmList:weakSelf.deviceInfo.deviceSerial // pageIndex:weakSelf.currentIndex++ // pageSize:EZMessageListPageSize // beginTime:weakSelf.beginTime // endTime:weakSelf.endTime // completion:^(NSArray *alarmList, NSInteger alarmCount, NSError *error) { // [weakSelf.messageList addObjectsFromArray:alarmList]; // if(weakSelf.messageList.count >= weakSelf.totalCount) // { // weakSelf.tableView.mj_footer.hidden = YES; // return; // } // [weakSelf tableViewDidReload:alarmList]; // [weakSelf.tableView.mj_footer endRefreshing]; // }]; [[EZHttpUtil sharedManager] getAlarmList:weakSelf.deviceInfo.deviceSerial pageNo:weakSelf.currentIndex++ pageSize:EZMessageListPageSize completion:^(ResponseData * responseData) { NSArray *alarmList = [NSArray array]; if (responseData.success){ HDLAlarmInfoData *alarmInfoData = [HDLAlarmInfoData yy_modelWithDictionary:responseData.data]; if (alarmInfoData) { if (alarmInfoData.list) { alarmList = alarmInfoData.list; } } } [weakSelf.messageList addObjectsFromArray:alarmList]; [weakSelf tableViewDidReload]; [weakSelf.tableView.mj_footer endRefreshing]; if(weakSelf.messageList.count >= weakSelf.totalCount) { weakSelf.tableView.mj_footer.hidden = YES; return; } }]; }]; } #pragma mark - Action Methods - (void)tableViewDidReload { if(self.messageList.count == 0) { self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.tableView reloadData]; [self.tableView addSubview:self.noMessage]; [self.tableView addSubview:self.noMessageLabel]; self.noMessage.frame = CGRectMake((self.tableView.bounds.size.width - 94)/2.0, self.tableView.center.y - 150, 94, 94); self.noMessageLabel.frame = CGRectMake((self.tableView.frame.size.width - 100)/2.0, self.noMessage.frame.origin.y + self.noMessage.frame.size.height + 10, 100, 20.0); return; } // if(self.currentIndex == 1) // { // [self.sections removeAllObjects]; // [self.tableView.mj_footer endRefreshing]; // self.lastDate = [messageList[0] getAlarmStartTime]; // self.dateFormatter.dateFormat = @"yyyy-MM-dd"; // NSString *key = [self.dateFormatter stringFromDate:self.lastDate]; // NSDictionary *dict = @{@"index":@0, @"date":key}; // [self.sections addObject:dict]; // } // for (int i = 0; i < messageList.count; i++) { // HDLAlarmInfo *info = [messageList dd_objectAtIndex:i]; // if(![[info getAlarmStartTime] isSameToDate:self.lastDate]) // { // NSInteger index = [self.messageList indexOfObject:info]; // self.dateFormatter.dateFormat = @"yyyy-MM-dd"; // NSString *key = [self.dateFormatter stringFromDate:[info getAlarmStartTime]]; // NSDictionary *dict = @{@"index":@(index),@"date":key}; // [self.sections addObject:dict]; // } // self.lastDate = [info getAlarmStartTime]; // } [self.tableView reloadData]; } - (IBAction)editTableView:(id)sender { if(self.tableView.editing){ self.tableView.allowsMultipleSelectionDuringEditing = NO; [self.tableView setEditing:NO animated:YES]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editTableView:)]; [self.navigationController setToolbarHidden:YES animated:YES]; self.deleteSelected.title = NSLocalizedString(@"delete", @"删除"); self.deleteSelected.enabled = NO; self.readAll.title = NSLocalizedString(@"message_read", @"标记已读"); self.readAll.enabled = NO; [self.selectedMessageArray removeAllObjects]; self.tableView.mj_header.hidden = NO; if(self.messageList.count < self.totalCount) self.tableView.mj_footer.hidden = NO; }else{ self.tableView.allowsMultipleSelectionDuringEditing = YES; [self.tableView setEditing:YES animated:YES]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(editTableView:)]; [self.navigationController setToolbarHidden:NO animated:YES]; self.tableView.mj_header.hidden = YES; self.tableView.mj_footer.hidden = YES; self.selectedAll.enabled = YES; self.deleteSelected.enabled = NO; self.readAll.enabled = NO; if (self.messageList.count > 10) { self.selectedAll.enabled = NO; } } } - (IBAction)selectedAll:(id)sender { _isSelectedAll = !_isSelectedAll; if(_isSelectedAll) { [self.selectedMessageArray removeAllObjects]; [self.selectedMessageArray addObjectsFromArray:self.messageList]; self.deleteSelected.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"delete", @"删除"),(int)[self.selectedMessageArray count]]; self.deleteSelected.enabled = YES; self.readAll.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"message_read", @"标记已读"),(int)[self.selectedMessageArray count]]; self.readAll.enabled = YES; } else { self.deleteSelected.title = NSLocalizedString(@"delete", @"删除"); self.readAll.title = NSLocalizedString(@"message_read", @"标记已读"); [self.selectedMessageArray removeAllObjects]; self.deleteSelected.enabled = NO; self.readAll.enabled = NO; } [self.tableView reloadData]; self.tableView.mj_footer.hidden = YES; } - (IBAction)deleteMessage:(id)sender { if(self.selectedMessageArray.count > 10) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES]; hud.mode = MBProgressHUDModeText; hud.userInteractionEnabled = NO; hud.labelText = NSLocalizedString(@"message_count_limit", @"数量不能超过10"); [hud show:YES]; [hud hide:YES afterDelay:1.0f]; return; } UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:NSLocalizedString(@"cancel", @"取消") destructiveButtonTitle:NSLocalizedString(@"delete", @"删除") otherButtonTitles:nil]; [actionSheet showInView:self.view]; } - (IBAction)readMessage:(id)sender { if(self.selectedMessageArray.count > 10) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES]; hud.mode = MBProgressHUDModeText; hud.userInteractionEnabled = NO; hud.labelText = NSLocalizedString(@"message_count_limit", @"数量不能超过10"); [hud show:YES]; [hud hide:YES afterDelay:1.0f]; return; } __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES]; hud.userInteractionEnabled = NO; hud.labelText = NSLocalizedString(@"message_setting", @"正在设置已读,请稍候..."); NSMutableArray *alarmIds = [NSMutableArray new]; for (int i = 0; i < self.selectedMessageArray.count; i++) { HDLAlarmInfo *info = [self.selectedMessageArray dd_objectAtIndex:i]; [alarmIds addObject:info.ysId]; } // [EZOPENSDK setAlarmStatus:alarmIds // alarmStatus:EZMessageStatusRead // completion:^(NSError *error) { // if(error) // { // hud.labelText = error.localizedDescription; // hud.mode = MBProgressHUDModeText; // [hud hide:YES afterDelay:1.2]; // } // else // { // [hud hide:YES]; // } // if(!error) // { // for (int i = 0; i < self.selectedMessageArray.count; i++) { // HDLAlarmInfo *info = [self.selectedMessageArray dd_objectAtIndex:i]; // info.isChecked = YES; // } // [self editTableView:self.navigationItem.rightBarButtonItem]; // [self.tableView reloadData]; // [EZOPENSDK getUnreadMessageCount:self.deviceInfo.deviceSerial messageType:EZMessageTypeAlarm completion:^(NSInteger count, NSError *error) { // self.title = [NSString stringWithFormat:@"%@(%d)",NSLocalizedString(@"message_title", @"消息"), (int)count]; // }]; // } // }]; //标记已读 __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] readAlarmMessage:alarmIds completion:^(ResponseData * responseData) { if(responseData.success){ [hud hide:YES]; for (int i = 0; i < self.selectedMessageArray.count; i++) { HDLAlarmInfo *info = [self.selectedMessageArray dd_objectAtIndex:i]; info.isChecked = YES; } [weakSelf editTableView:self.navigationItem.rightBarButtonItem]; [weakSelf.tableView reloadData]; }else{ hud.labelText = NSLocalizedString(@"setting_opration_fail", @"操作失败"); hud.mode = MBProgressHUDModeText; [hud hide:YES afterDelay:1.2]; } }]; } - (NSString *)dateStringWithUserDefine:(NSString *)dateString { NSDateFormatter * formatter = [[NSDateFormatter alloc ] init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [formatter dateFromString:dateString]; NSArray *weekDays = @[NSLocalizedString(@"message_sunday", @"周日"), NSLocalizedString(@"message_monday", @"周一"), NSLocalizedString(@"message_tuesday", @"周二"), NSLocalizedString(@"message_wednesday", @"周三"), NSLocalizedString(@"message_thursday", @"周四"), NSLocalizedString(@"message_friday", @"周五"), NSLocalizedString(@"message_saturday", @"周六")]; if ([date isThisYear]) { if ([date isToday]) { return NSLocalizedString(@"message_today", @"今天"); } else if ([date weekday] > 0 && [date weekday] <= 7) { return [NSString stringWithFormat:@"%ld-%ld %@", (long)[date month], (long)[date day], weekDays[[date weekday]-1]]; } } else { if ([date weekday] > 0 && [date weekday] <= 7) { return [NSString stringWithFormat:@"%@ %@", dateString, weekDays[[date weekday]-1]]; } } return nil; } @end