2013-04-22 53 views
0

我有以下信息的陣列,從JSON檢索:從陣列使用日期排序的UITableView日期

Contents of events: (
    "<CalendarModel> \n [title]: Arsenal v Man Utd\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-28T17:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Reading v QPR\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-28T14:30:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Newcastle v Liverpool\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-27T18:30:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: TBC\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-27T16:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Man City v West Ham\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-27T13:45:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Man Utd v Aston Villa\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-22T21:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Liverpool v Chelsea\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-21T17:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Spurs v Man City\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-21T14:30:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Fulham v Arsenal\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-20T16:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: West Ham v Man Utd\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-17T20:45:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Arsenal v Everton\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-16T20:45:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Chelsea v Man City\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-14T17:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Stoke v Man Utd\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-14T15:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Millwall v Wigan\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-13T18:15:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Reading v Liverpool\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-13T16:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: FC Basel v Spurs\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-11T21:05:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Rubin Kazan v Chelsea\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-11T21:05:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Juventus v Bayern Munich\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-10T20:45:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Barcelona v Paris St Germain\n [time]: (\n  \"<Time> \\n [startTime]: 2013-04-10T20:45:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Everton v Stoke\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-30T18:30:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Swansea v Spurs\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-30T16:00:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Sunderland v Man Utd\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-30T13:45:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Ireland v Austria\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-26T20:45:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Denmark v Bulgaria\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-26T20:15:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Sweden v Ireland\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-22T19:45:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Dennis McLaughlin\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-31T22:30:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-30T23:00:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-29T22:30:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-28T21:30:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2013-03-27T21:30:00.000+01:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Pat Kelly\n [time]: (\n  \"<Time> \\n [startTime]: 2013-02-14\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Ray Weaver\n [time]: (\n  \"<Time> \\n [startTime]: 2013-01-31\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Take the Biscuit\n [time]: (\n  \"<Time> \\n [startTime]: 2013-01-24\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: The McLaughlin Clan\n [time]: (\n  \"<Time> \\n [startTime]: 2013-01-18\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Local Artist\n [time]: (\n  \"<Time> \\n [startTime]: 2013-01-17\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Richie Vargas\n [time]: (\n  \"<Time> \\n [startTime]: 2013-01-10\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Tom Valbak\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-28\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Tom Brakl\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-25\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Tom Brakl\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-23\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Dessie Higgins\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-20\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Pat Kelly\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-13\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Rich Vargas\n [time]: (\n  \"<Time> \\n [startTime]: 2012-12-06\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2012-11-22\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: International Jam Session\n [time]: (\n  \"<Time> \\n [startTime]: 2012-09-03T21:00:00.000+02:...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Kevin McKernan\n [time]: (\n  \"<Time> \\n [startTime]: 2012-08-30\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n  \"<Time> \\n [startTime]: 2012-08-09\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Ray Weaver\n [time]: (\n  \"<Time> \\n [startTime]: 2012-07-19\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Gray Hawthorn\n [time]: (\n  \"<Time> \\n [startTime]: 2012-07-05\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Jimmy Walsh\n [time]: (\n  \"<Time> \\n [startTime]: 2012-06-07\\n [endTime]: 2...\n</CalendarModel>", 
    "<CalendarModel> \n [title]: Take The Biscuit\n [time]: (\n  \"<Time> \\n [startTime]: 2012-11-29\\n [endTime]: 2...\n</CalendarModel>" 

我試圖創建一個開始時間(只有日期,而不是小時的tableview和分鐘)作爲titleForHeaderInSection。包含事件的NSMutableArray被稱爲事件

任何人都可以幫助我走向正確的方向。就目前而言,我正在收回沒有標題的數據,只是事件。我現在有以下內容,但我仍在測試。這至少會創建一個名爲測試

#pragma mark - table methods 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return events.count; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

    CalendarModel* event = events[section]; 

    NSString *dato = [[event.time objectAtIndex:0] startTime]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz"; 
    NSDate *gmtDate = [formatter dateFromString: dato]; 
    formatter.dateFormat = @"dd-MM-yyyy"; 
    dato = [formatter stringFromDate:gmtDate]; 
    return dato; 
} 

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    CalendarModel* event = events[indexPath.row]; 


    NSString *dato = [[event.time objectAtIndex:0] startTime]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz"; 
    NSDate *gmtDate = [formatter dateFromString: dato]; 
    formatter.dateFormat = @"HH:mm"; 
    dato = [formatter stringFromDate:gmtDate]; 


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SportCell" forIndexPath:indexPath]; 
    cell.textLabel.text = [NSString stringWithFormat:@"%@", 
          event.title 
          ]; 
    cell.detailTextLabel.text = dato; 


    return cell; 
} 

已編輯上面的代碼首部。它現在可以工作,但每次都會顯示相同的遊戲。彷彿它總是採取第一個,並表明。我認爲問題出在

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

方法。

回答

1

您的JSON數據給我http://json.parser.online.fr/

錯誤試試這個:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 


     CalendarModel* event = events[section]; // i think CalendarModel is a class in which you store yor json data one by one. 
     return event.Title; // In event class you have to save title; 
     //return [[events objectAtIndex: section] objectForKey: @"Title"]; 
    } 
+0

這不是一個JSON,我認爲他顯示了一個NSManagedObjects數組。 – Raj 2013-04-23 06:59:15

0

我覺得你的財產標題使用大寫字母。 在數組中它只是'標題'

請嘗試下面的代碼行。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

    return [[events objectAtIndex: section] objectForKey: @"title"]; 
} 
  • 如果它不工作,你可以請向我們展示CalendarModel

您的實現,你的頭會一直顯示的第一個標題爲標題,既然你的一個主要問題只有1部分

如果我是貴族,你需要像這樣實施

#pragma mark - table methods 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return events.count; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

    return [[events objectAtIndex: section] objectForKey: @"title"]; 
} 

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    CalendarModel* event = events[indexPath.section]; 


    NSString *dato = [[event.time objectAtIndex:0] startTime]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz"; 
    //formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:3600]; 
    //formatter.calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 
    //formatter.locale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_GB"]; 
    NSDate *gmtDate = [formatter dateFromString: dato]; 
    formatter.dateFormat = @"dd-MM-yyyy HH:mm"; 
    dato = [formatter stringFromDate:gmtDate]; 


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SportCell" forIndexPath:indexPath]; 
    cell.textLabel.text = [NSString stringWithFormat:@"%@", 
          event.title 
          ]; 
    cell.detailTextLabel.text = dato; 


    return cell; 
}