好一点背景,这样你就可以得到我在这里想做的事情。会有几个问题所以请耐心等待。
我正在建立自己的iPhone应用程序,显示当天即将推出的游戏。您可以在下面的图片中看到结构。
让我们调用上面的表视图:“TableView1”,并将其称为“TableView2”。 截至目前,我正在从返回Json文本的网站填充TableView1的数据。
http://afternoon-springs-7986.herokuapp.com
以下是在GamesInfoViewController.m(通过Storyboard连接到TableView1的类)中执行此操作的代码
- (void) retrieveData{
NSURL *url = [NSURL URLWithString:@"http://localhost:5000"];
NSData *data = [NSData dataWithContentsOfURL:url];
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
GamesInfoArray = [[NSMutableArray alloc] init];
for (int i= 0; i < jsonArray.count; i++)
{
NSString *gameTime = [[jsonArray objectAtIndex:i] objectForKey:@"time"];
NSString *gameID = [[jsonArray objectAtIndex:i] objectForKey:@"identity"];
NSString *homeTeam = [[jsonArray objectAtIndex:i] objectForKey:@"homeTeam"];
NSString *homeScore = [[jsonArray objectAtIndex:i] objectForKey:@"homeScore"];
NSString *awayTeam = [[jsonArray objectAtIndex:i] objectForKey:@"awayTeam"];
NSString *awayScore = [[jsonArray objectAtIndex:i] objectForKey:@"awayScore"];
[GamesInfoArray addObject:[[GameInfo alloc] initWithidentity:gameID andtime:gameTime andawayTeam:awayTeam andawayScore:awayScore andhomeTeam:homeTeam andhomeScore:homeScore]];
}
[self.tableView reloadData];
}
正如您所看到的,我将信息保存在名为GamesInfoArray的NSMutableArray中。现在,一些存储在GamesInfoArray中的对象将用于填充TableView2(我将使用if语句检查特定游戏是否已开始使用存储在每个对象中的时间值)
我认为最好的方法是使用上面的代码从Web服务器获取信息并将其放在处理该信息的新类中,然后将信息放在两个不同的NSMutableArrays中。我现在得到的那个和另一个填充TableView2。这样每个TableView都可以从正确的NSMutableArray中获取所需的信息。
这是TableView1的一个例子:
你看到的那个有一个绿色按钮意味着它的实时,这是一个将在TableView2中显示的对象的一个例子
由于它是我的第一个应用程序,我之前从未做过这样的事情,如果我正在思考或者我应该采取另一种方式,我会喜欢一些提示。
如果您需要任何额外的代码或信息,请告诉我并更新代码
答案 0 :(得分:0)
由于TableView2依赖于GamesInfoViewController中的信息,因此创建一个单独的类来存储数据是有意义的。特别是因为如果在GamesInfoViewController中检索它,TableView2将拥有最新的数据。
我会创建两个类:一个获取数据的API客户端类,以及一个存储/缓存GameInfo对象数组的单例。我只会将GameInfo对象存储在单例上,并且如果需要,在数据源TableView2上有一个单独的数组(如果您显示完全相同的信息,除了只有实时游戏,您可以在两者之间共享相同的GameInfo数组)表)。 retrieveData方法也应该保留在每个视图控制器类中,以便您可以适当地响应连接/解析错误。