2013-06-11 4 views
0

Im разбор данных JSON во внешнем классе (NSObject), который затем помещает организованные анализируемые данные в массив. Затем этот массив помещается в мой вид таблицы. Поскольку для анализа информации требуется больше времени, то для завершения viewDidLoad массив всегда равен нулю.Дождитесь завершения полного завершения JSON ViewDidLoad

Код:

- (void)viewDidLoad 
{ 
//Fetching Data 
[super viewDidLoad]; 
myClass = [[MyClass alloc] init]; 
[myClass fetchDataWithTarget:self]; 

//Initialize the dataArray 
dataArray = [[NSMutableArray alloc] init]; 

//First section data 
NSArray *firstItemsArray = myClass.fechedDataArray; 
NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:firstItemsArray forKey:@"data"]; 
[dataArray addObject:firstItemsArrayDict]; 

} 


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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
} 

NSDictionary *dictionary = [dataArray objectAtIndex:indexPath.section]; 
NSArray *array = [dictionary objectForKey:@"data"]; 
NSString *cellValue = [array objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 

return cell; 
} 

Как я могу гарантировать, что firstItemsArray устанавливается после того, как данные считываются.

Примечание: для табличного представления, очевидно, больше всего, поэтому я сделал все словарные материалы для разделения разделов, а что нет.

+0

Я не вижу никаких асинхронных методов в вашем коде, так что конкретно вы имеете в виду с «после получения данных» *? –

+0

Что делает 'fetchDataWithTarget'? – tia

+1

Очень похоже [вопрос] (http://stackoverflow.com/q/16315317/767730). Я дал [ответ] (http://stackoverflow.com/a/16315573/767730), который вы также можете использовать в этом случае. – Anupdas

ответ

0

Вы должны загрузить данные в формате JSON в массив ДО

- (void) viewDidLoad 

или использовать некоторый тип резьбы (асинхронный метод), такие как:

performSelectorInBackground:withObject 

NSOperation или Grand Central Dispatch

Смежные вопросы