将数据加载到iphone时的数组结构

时间:2011-06-06 07:19:11

标签: iphone model-view-controller ios4 nsmutablearray

我已经进入iphone编程几周了,我已经设法创建了我的第一个sqlite驱动数据库。

对于我的第一个基本应用程序,我有2个表(具有一对多的关系):品牌,产品

brands (code, brandname)
products (code, brandcode, productname, price, ...)

我的样本数据:

* brands:
1 apple
2 hp
*products:
1 1 Macbookpro
2 1 iphone
3 1 ipad2
4 2 hpnotebook

我有2个nib文件:1个带有显示品牌列表的tableviews,1个有一些显示品牌信息的出口和一个用于显示相应产品的tableview。

首先,我在didFinishLaunchingWithOptions期间加载的应用程序委托中创建了2个nsmutablearrays。

然而,当我加载第二个tableview时,没有办法知道cellForRowAtIndexPath函数的单元格中的数据,因为我的产品数组全部都是..而且我不知道第二个匹配的产品是什么品牌代码标准= 1

所以我改变了我的品牌类结构,以便它包含一个nsmutablearray的产品。 在加载产品时,我将它们分别添加到母品牌的nsmutablearray中。

表现明智:我做的是正确的吗?或者有更好的方法来过滤我的产品表。

感谢您的帮助和时间

欢呼声,

2 个答案:

答案 0 :(得分:1)

您可以在品牌明细视图的.h文件中创建一个NSMutableArray类型的实例变量。当您捕获事件时,用户想要查看品牌,然后将正确的产品数组附加到该表视图控制器。

当用户在第一个表视图中点击品牌(tableView:didSelectRowAtIndexPath)时,执行以下操作:

MyTableView *tableView = [[MyTableView alloc] init];
tableView.myNSMutableArrayforABrand = arrayWithProductData;
[self.view addSubview:tableView]
[tableView release];

这样您就可以将第一个表视图中的数据附加到第二个表视图中。

答案 1 :(得分:0)

我会创建两个类(品牌和产品)。 Brand类包含带有Product-instances的MutArray。 ViewController或AppDelegate拥有MutArray of Brands。您必须将信息从第一个TableView传递到第二个tableview。

您有两种可能性:

1:点击品牌tableView:didSelectRowAtIndexPath:后,您将使用以下内容获取所选的obj:product = [brands objectAtIndex:indexPath.row]并将该产品传递给第二个viewController(例如,通过新的initWithProduct:),然后显示数据该产品。

2:点击一个品牌:只传递该品牌的index / primaryKey,第二个ViewController从db本身获取该键的所有产品。