我在外部类(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
。
注意:表格视图显然还有更多,我做了所有的字典内容来分隔各个部分而不是。
答案 0 :(得分:0)
您必须将JSON数据加载到数组BEFORE
中- (void) viewDidLoad
或使用某种类型的线程(异步方法),例如:
performSelectorInBackground:withObject
NSOperation或Grand Central Dispatch