在我-(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實例並在其上執行我的私有方法?
一般的經驗法則是,如果你打算重用的邏輯,然後將其放置到一個可重用的對象。這個想法是防止重複。在你的情況下,創建一個'DateUtils'類並將你的邏輯放在那裏。創建一個類別將是另一種選擇。 – Jeremy 2013-02-12 18:11:34
可能的重複:http://stackoverflow.com/questions/172598/best-way-to-define-private-methods-for-a-class-in-objective-c – Kekoa 2013-02-12 18:12:09