0
後,我有一個類,它從資源庫中獲取數據和它填充到一個NSArray:NSArray的空調用reloadData
EpisodeRepository類
- (NSMutableArray的*)getEpisodes {
NSMutableArray *episodes = [NSMutableArray array];
NSData *data = [self getDataFromAction:kGetEpisodesAction];
NSError *error = nil;
NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
for (NSDictionary *d in json) {
Episode *episode = [self buildEpisodeFromJSONDictionary:d];
[episodes addObject:episode];
}
return episodes;
}
在我的視圖控制器中,我保留對回購和劇集數組的引用,如下所示:
@interface VideoController : UITableViewController
@property (nonatomic, strong) NSArray *episodes;
@property (nonatomic, strong) EpisodeRepository *episodeRepo;
在實現中,我想要發生的是每個視圖都會出現,從Web服務(位於EpisodeRepository中)中重新獲取數據,並使用更新後的劇集重新加載表視圖。這在第一次填充tableview時效果很好。問題是,當我調用cellForRowAtIndexPath時,劇集數組完全是空白的。它不是空的,但是沒有任何數據。奇怪的是,所有其他tableView代表意識到數組中有數據並相應地執行。 cellForRowAtIndexPath有什麼特別之處,爲什麼它可能會刪除數組中的條目?
下面是控制器實現:
-(id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self) {
episodeRepo = [[EpisodeRepository alloc] init];
}
return self;
}
-(void)viewWillAppear:(BOOL)animated
{
[self loadContent];
[self.tableView reloadData];
[super viewWillAppear:animated];
}
-(void) loadContent {
self.episodes = [self.episodeRepo getEpisodes];
self.seasons = [self getSeasons:self.episodes];
[self setUILoaded];
}
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//episodes is an empty array here???
}
發佈getDataFromAction實現。是異步的? – LombaX