如何实施结账/购物篮系统

时间:2010-04-09 00:14:44

标签: iphone objective-c e-commerce checkout

我正在制作一个有趣的应用程序,并想知道如何在应用程序上实现结帐/购物篮系统。

基本上,产品列表以XML文件的形式从Web服务器中提取,然后显示在UITableView控制器中。点击单元格可以让用户更详细地了解产品。

应用程序需要能够将产品变成篮子类型的东西,这就是我遇到的问题。

我可以查看一些代码示例吗?

1 个答案:

答案 0 :(得分:0)

如果您为数据选择适当的格式,则此任务很简单。 ObjC中最自然的XML represantation是NSDictionaries / NSArrays树。在最简单的情况下,你有NSArray的项目(你在tableview中显示的那些),每个都是NSDictionary,其中包含“ItemName”,“ItemPrice”等键。很容易在表中显示访问数组索引中的项目:

-(UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSDictionary * item = [allItems objectAtIndex:indexPath.row];
    NSString * cellTitle = [item objectForKey:@"ItemName"];
    ...
}

当项目cliked打开您的DetailViewController并传递对所选项目的引用:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath{
    MyDetailViewController * myDetailViewController = [[MyDetailViewController alloc] init];
     //MyDetailViewController should have a property of NSDictionary type, let it be "item"
    myDetailViewController.item = [allItems objectAtIndex:indexPath.row];
    //pass also ref to basket
    myDetailViewController.basket = basket;
    [self.myDetailViewController pushViewController:dvController animated:YES];
    [myDetailViewController release]; 

}

显示详细控制器中的所有项目属性。

Basket是NSMutableDictionaries的NSMutableDictionary。每个backet项密钥是所有项中唯一的项属性,例如“ItemName”。每个backet项值应包含对原始数组中的item的引用。在MyDetailViewController中,您可以将项目添加到篮子中,如:

-(void)addToBasket{
    NSDictionary * itemToAdd = [NSDictionary dictionaryWithObjectsAndKeys:
       item, @"item", // this is reference to item from original array
       [NSNumber numberWithInt:amount], @"amount", // or some other properties
       nil];    
       [self.basket setObject:itemToAdd forKey:[item objectForKey:@"ItemName"]]; 
}

打开DetailViewController时,检查篮子是否已包含curent项目:

if ([self.basket objectForKey:[item objectForKey:@"ItemName"])

如果是这样,请显示已将固有项目添加到购物篮中,并提供删除或更改金额的选项。