我有一个程序连接到 MAMP 服务器并选择我的数据库并在 Xcode 模拟器中显示内容。现在我有 2 个选项卡,两者的数据相同。我希望选项卡能够分隔要在每个选项卡中显示的数据类型。(一个标签应该显示酿酒葡萄的类型,另一个显示葡萄酒国家)
我认为我必须创建一个提取数据的类(NSObject 的子类),然后创建另一个具有可变数组的视图控制器,该数组保存每个选项卡所需的数据,但我该怎么做呢?如何创建 MutableArray?
这是我的 TableViewController.m 中的代码,它使用 JSON 连接到我的数据库:
- (void)viewDidLoad { [super viewDidLoad]; NSURL *url = [NSURL URLWithString:@"http://[localhost]:8888/wine.php"]; // 修改它以匹配您的网址。
NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url]; // Pulls the URL
NSLog(jsonreturn); // Look at the console and you can see what the restults are
NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;
// In "real" code you should surround this with try and catch
NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
if (dict)
{
rows = [[dict objectForKey:@"wine"] retain];
}
NSLog(@"Array: %@",rows);
[jsonreturn release];
}
然后我为 tableview 创建了另一种方法:
pragma mark - 表视图数据源
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [rows count]; }
// 自定义表格视图单元格的外观。- (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] autorelease];
}
// Configure the cell.
NSDictionary *dict = [rows objectAtIndex: indexPath.row];
//cell.textLabel.text = [dict objectForKey:@"id"];
//cell.textLabel.text = [dict objectForKey:@"wineColor"];
//cell.textLabel.text = [dict objectForKey:@"wineGrape"];
cell.textLabel.text = [dict objectForKey:@"wineCountry"];
cell.detailTextLabel.text = [dict objectForKey:@"id"];
return cell;
}
有了这个,相同的数据(葡萄酒国家)显示在两个葡萄和国家选项卡中。如何创建一个可变数组来获取每个选项卡中应显示的数据?