等到JSON解析完成后才能完成ViewDidLoad

时间:2013-06-11 01:14:46

标签: ios objective-c cocoa-touch

我在外部类(NSObject)类中解析JSON数据,然后将解析后的数据组织到一个数组中。然后将该数组放入我的表视图中。因为解析信息需要更长的时间,所以要完成viewDidLoad,数组总是设置为nil。

代码:

- (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

注意:表格视图显然还有更多,我做了所有的字典内容来分隔各个部分而不是。

1 个答案:

答案 0 :(得分:0)

您必须将JSON数据加载到数组BEFORE

- (void) viewDidLoad

或使用某种类型的线程(异步方法),例如:

performSelectorInBackground:withObject

NSOperation或Grand Central Dispatch