2013-03-27 72 views
0

我有一個EventObject數組。每個對象都有標題和城市以及其他許多屬性。我想將單元格的標題顯示爲事件標題,並將單元格的標題顯示爲事件城市。我在下面試過這樣做,但我只獲得最後一個對象顯示4次(即數組中的對象數量)。顯示所有行的最後一條記錄

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

// NSDate *object = _objects[indexPath.row]; 
// cell.textLabel.text = [object description]; 

    EventObject *eventInstance = [[EventObject alloc] init]; 
    int row = [indexPath row]; 

    eventInstance = eventObjectsArray[row]; 
    cell.textLabel.text = eventInstance.eventTitle; 
    NSLog(@"Event Title: %@", eventInstance.eventTitle); 
    cell.detailTextLabel.text = eventInstance.eventCity; 

    return cell; 
} 

我做錯了什麼?我正在學習Objective-C,所以初學者肯定會犯錯誤。由於

編輯:這是怎麼了插入對象:

//get events from database 
    eventsDictionary = [eventInstance getEventsObjects]; 

    //process each key in dictionary and assign to eventInstance 
    for(id key in eventsDictionary) 
    { 
     eventInstance.eventId = [NSString stringWithFormat:@"%@", key[@"id"]]; 
     eventInstance.eventTitle = [NSString stringWithFormat:@"%@", key[@"title"]]; 
     eventInstance.eventDescription = [NSString stringWithFormat:@"%@", key[@"description"]]; 
     eventInstance.eventCity = [NSString stringWithFormat:@"%@", key[@"city"]]; 
     [eventObjectsArray addObject:eventInstance]; 
    } 
+1

如何將對象存儲在eventObjectsArray中?發佈該代碼 – 2013-03-27 15:46:07

+1

爲什麼要創建一個「EventObject」類的新實例。只需創建該類的引用並從「eventObjectsArray」中獲取該對象.As @Bhargavi說,向我們展示您插入代碼的位置數組中的對象。 – Suny 2013-03-27 16:01:00

+0

問題絕對不在您發佈的代碼中。它必須在你如何填充'eventObjectsArray'。 – rmaddy 2013-03-27 16:02:40

回答

1

建議

[這可能是問題]

雖然在eventObjectsArray添加對象確保在添加對象之前每次都有新的EventObject對象

EventObject *eventInstance = [[EventObject alloc] init]; 
eventInstance.eventTitle = @"your title"; 
eventInstance.eventCity = @"your city"; 
[eventObjectsArray addObject:eventInstance]; 

[這是建議,你應該知道這一點,以提高你的編碼標準和內存管理]

雖然從陣列retriving對象回你真的不需要定製對象的實例,而有refrence到它就像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    //EventObject *eventInstance = [[EventObject alloc] init]; //you don't need this 
    int row = [indexPath row]; 

    EventObject *eventInstance = eventObjectsArray[row]; // make reference like this 
    cell.textLabel.text = eventInstance.eventTitle; 
    NSLog(@"Event Title: %@", eventInstance.eventTitle); 
    cell.detailTextLabel.text = eventInstance.eventCity; 

    return cell; 
} 
+0

我試圖複製粘貼cellForRowAtIndexPath的代碼,但不幸運。任何其他建議隊友?我真的很感激:)詳細的回答:) – 2013-03-27 16:27:24

+0

你有沒有得到任何編譯時錯誤或運行時問題? – Suny 2013-03-27 16:28:21

+0

抱歉修改了一下,你插入的時候是對的,我必須每次創建EventObject。非常感謝你的配偶。 – 2013-03-27 16:29:11

相關問題