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
устанавливается после того, как данные считываются.
Примечание: для табличного представления, очевидно, больше всего, поэтому я сделал все словарные материалы для разделения разделов, а что нет.
Я не вижу никаких асинхронных методов в вашем коде, так что конкретно вы имеете в виду с «после получения данных» *? –
Что делает 'fetchDataWithTarget'? – tia
Очень похоже [вопрос] (http://stackoverflow.com/q/16315317/767730). Я дал [ответ] (http://stackoverflow.com/a/16315573/767730), который вы также можете использовать в этом случае. – Anupdas