我有一个问题。我从我的网址获得JSON,如下所示:
- (NSMutableArray *)parseObject:(NSString *)object withKey:(NSInteger)key {
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *randomKey = [standardUserDefaults stringForKey:@"randomKey"];
NSString *urlString = [NSString stringWithFormat:@"http://domain.com"];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSArray* latestLoans = [json objectForKey:@"object"];
NSDictionary* loan = [latestLoans objectAtIndex:key];
NSArray *myWords = [[loan objectForKey:object] componentsSeparatedByString:@","];
return myWords;
}
到我的TableView
- (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];
}
cell.textLabel.text = [[self parseObject:@"bedrijfsnaam" withKey:0] objectAtIndex:indexPath.row];
//cell.detailTextLabel.text = [[self parseObject:@"leverunix" withKey:0] objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont systemFontOfSize:14.0];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 3;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
它加载得非常慢,当我想滚动时,我有一种滞后。我能做些什么来改善它?
由于
答案 0 :(得分:3)
似乎每次从服务器获取JSON数据cellForRowAtIndexPath
。那一定很慢!
您应该只获取一次数据(例如在viewDidLoad
中),反序列化JSON
并将结果存储在视图控制器的某个属性中,以便cellForRowAtIndexPath
可以从那里获取对象。
答案 1 :(得分:2)
致电
NSData *data = [NSData dataWithContentsOfURL:url];
导致主线程在从Web URL检索数据时被阻塞。
尝试使用异步方法。它将解决问题。
答案 2 :(得分:0)
您正在致电
- (NSMutableArray *)parseObject:(NSString *)object withKey:(NSInteger)key
一次又一次地在cellForRowAtIndexPath。
这不应该发生。
尝试将数据放在viewDidLoad或viewWillAppear中,然后将该数据保存在全局变量中。
现在调用任何将从该变量获取数据并返回所需值的函数。