我已经进入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中。
表现明智:我做的是正确的吗?或者有更好的方法来过滤我的产品表。感谢您的帮助和时间
欢呼声,
答案 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本身获取该键的所有产品。