2014-12-02 59 views
0

我有一個視圖控制器,其中嵌入了一個tableView。我有以下代碼。NSMutableArray屬性不工作在dequeueReusableCellWithIdentifier

@property (nonatomic, strong) NSMutableArray* eventArray; 

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    self.eventTableView.delegate = self; 
    self.eventTableView.dataSource = self; 

    if (!self.eventArray){ 
     self.eventArray = [[NSMutableArray alloc] init]; 
    } 

    ... 

    for(NSDictionary* dict in responseObject){ 

      [self.eventArray addObject:[[Event alloc] initWithEventName:[dict valueForKey:@"Name"]eventDescription:[dict valueForKey:@"Description"]]]; 
     } 

    [self.eventTableView reloadData]; 
} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    for(Event* event in self.eventArray) 
    { 
     NSLog(@"Event Name in numberofRows: [%@]", [event eventName]); 
    } 
    return [self.eventArray count]; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *MyIdentifier = @"EventCell"; 

    EventTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    Event* eventForCell = (Event*)[self.eventArray objectAtIndex:[indexPath row]]; 

    NSLog(@"eventArraySize [%lu]", [self.eventArray count]); 

    for(Event* event in self.eventArray) 
    { 
     NSLog(@"Event Name: [%@]", [event eventName]); 
    } 


    [cell.eventNameLabel setText: [eventForCell eventName]]; 
    return cell; 
} 

由於代碼運行通過我看到的對象添加到eventArray成功,日誌循環,我在numberOfRowsInSection打印打印在的cellForRowAtIndexPath以下

Event Name in numberofRows: [Worship Rehearsal] 
Event Name in numberofRows: [Worship Rehearsal] 
Event Name in numberofRows: [Worship Rehearsal] 

同一迴路打印出以下內容

eventArraySize [3] 
Event Name: [(null)] 
Event Name: [(null)] 
Event Name: [(null)] 

我試過用其他屬性,我可以正確訪問它們。謝謝你的幫助。

+0

一切都很好,您的活動名稱爲零 – Andy 2014-12-02 02:25:59

+0

您可以發佈視圖控制器代碼的其餘部分嗎? – 2014-12-02 03:00:05

回答

0

我能解決這個問題,感謝您的幫助。問題出在我的Event Object中,屬性被設置爲弱而不是強引用。一旦我將它們更改爲:

@property (strong, nonatomic) NSString *eventName; 

對象開始按預期工作。數組本身工作正常,但我的Event對象內的字段正在釋放。

0

活動的名稱爲零。這是因爲初始化數組時存在問題。

這是錯誤的[dict valueForKey:@"Name"]

使用此[dict objectForKey:@"Name"]

或者乾脆dict[@"Name"]

0

要打印每一個你可以嘗試使用此代碼細胞活動的名字嗎?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *MyIdentifier = @"EventCell"; 

    EventTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    Event* eventForCell = (Event*)[self.eventArray objectAtIndex:[indexPath row]]; 

    NSLog(@"eventArraySize [%lu]", [self.eventArray count]); 

    //for(Event* event in self.eventArray) 
    //{ 
    // NSLog(@"Event Name: [%@]", [event eventName]); 
    //} 
    //Commenting above code 

    NSLog(@"Event Name: [%@]", [eventForCell eventName]); 

    [cell.eventNameLabel setText: [eventForCell eventName]]; 
    return cell; 
}