0

在我的-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中,我有此代码来返回单元格标签的 youtube 视频日期:

   //Video upload date
   NSString *formattedString = [[[self.videos objectAtIndex:indexPath.row] objectForKey:@"uploaded"] stringByReplacingOccurrencesOfString:@"T" withString:@""];

   formattedString = [formattedString stringByReplacingCharactersInRange:NSMakeRange(18, 5) withString:@""];

   NSDateFormatter *df = [[NSDateFormatter alloc] init];

   [df setDateFormat:@"yyyy-MM-ddHH:mm:ss"];

   NSDate *date = [df dateFromString:formattedString];

   [df setDateFormat:@"dd/MM/yyyy"];

   NSString *dateStr = [df stringFromDate:date];

   cell.date.text = dateStr;

我的方法实现看起来有点乱,我想知道什么是正确的方法。我应该将此代码保留在原处还是应该为日期格式设置另一种私有方法?

假设我想做私有方法。就像是:

   -(NSString *)formatDateWithString:(NSString *) mystring {

      NSString *formattedString = [mystring stringByReplacingOccurrencesOfString:@"T" withString:@""];

      formattedString = [formattedString stringByReplacingCharactersInRange:NSMakeRange(18, 5) withString:@""];

      NSDateFormatter *df = [[NSDateFormatter alloc] init];

      [df setDateFormat:@"yyyy-MM-ddHH:mm:ss"];

      NSDate *date = [df dateFromString:formattedString];

      [df setDateFormat:@"dd/MM/yyyy"];

      NSString *dateStr = [df stringFromDate:date];

      return dateStr; 
      }

我应该在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中写什么?

我的私有方法的论点是,[self.videos objectAtIndex:indexPath.row]但我已经失去了如何调用这个方法以及在哪个实例变量上?

我需要NSString在我的视图类中创建一个实例变量,或者我可以在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中启动 NSString 实例并在其上执行我的私有方法?

4

2 回答 2

2

一般的经验法则是,如果您打算重用逻辑,则将其放入可重用对象中。这个想法是为了防止重复。在您的情况下,您如何创建一个DateUtils类并将您的逻辑放在那里。创建一个类别将是另一种选择。

示例用法:

NSString *youtubeVideoDateStr = [DateUtils formatDateWithString:@"..."];
于 2013-02-12T18:13:02.190 回答
1

这个问题没有真正的“正确”答案。“看起来凌乱”不是一个可量化的问题,因此无法衡量任何更改的正确性。

如果您可以证明代码将更易于维护,那么也许您可以证明重新分解它的时间是合理的。花在学习上的时间会比花在简化上的时间更多吗?

于 2013-02-12T18:12:51.260 回答