开发者

arrays structure when loading data into iphone

开发者 https://www.devze.com 2023-03-11 03:19 出处:网络
i\'ve been into iphone programming for a couple of weeks now, and i\'ve managed to create my first sqlite driven database.

i've been into iphone programming for a couple of weeks now, and i've managed to create my first sqlite driven database.

for my first basic application, i have 2 tables (with a one-many relationship): brands, products

brands (code, brandname)
products (c开发者_运维问答ode, brandcode, productname, price, ...)

as for my sample data:

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

and i have 2 nib files: 1 with a tableviews showing the list of brands, and one having some outlets to show brand information and a tableview to show the corresponding products.

at first i've created 2 nsmutablearrays in the application delegate that i load during the didFinishLaunchingWithOptions.

however, there's no way to know the data in the cell for the cellForRowAtIndexPath function when i'm loading the second tableview because my array of products has them all.. and i wouldn't know what's the second product that matches the criteria of brandcode=1

so i changed my brand class structure so that it contains an nsmutablearray of products. and while loading products i add them each to the nsmutablearray of the parent brand.

performance-wise: was what i did correct? or are there any better ways to filter my products table.

i appreciate your help and time

cheers,


You could create an instance variable in the .h file of the brand details view that is of NSMutableArray type. When you catch the event for when a user wants to see the brands you then attach the correct array of products to that table view controller.

When the user clicks (tableView:didSelectRowAtIndexPath) on a brand in the first table view do something like this:

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

This way you attach the data from the first table view to the second.


I would create two Classes (Brand and Product). The Brand class contains an MutArray with Product-instances. The ViewController or AppDelegate holds an MutArray of Brands. You have to pass information from the first TableView to the second tableview.

You have two possibilities:

1: On click on a brand tableView:didSelectRowAtIndexPath: you get the selected obj using: product = [brands objectAtIndex:indexPath.row] and pass that product to the second viewController (eg via a new initWithProduct:) which then present data of that product.

2: On click on a brand: pass just the index/primaryKey of that brand and the second ViewController fetches all Products of that key from the db itself.

0

精彩评论

暂无评论...
验证码 换一张
取 消