Как реализовать проверку / корзина
-
25-09-2019 - |
Вопрос
Я делаю приложение для развлечения и хотел бы знать, как реализовать систему Checkout / Basket в приложении.
В основном, список продуктов выталкивается с веб-сервера в виде файла XML, который затем отображается в контроллере UiableView. Нажмите на камеру, принимает пользователь к более подробному обзору продукта.
Приложение должно быть в состоянии получить продукт в типовой вещи корзины, и это там, где я застрял.
Есть ли какие-либо образцы кода, на которые я мог посмотреть?
Решение
Эта задача проста Если вы выберете подходящий формат для ваших данных. Большинство природных XML-представленных в OBJC является Nsdictions / NSArrays Tree. В Simelest Case у вас есть Nsarray товаров (те, которые вы показываете в TablView), каждый из них является Nsdictionary с ключами, такими как «ItemName», «ItemPrice» и т. Д. Легко отображать в таблице доступа к элементам в массиве с индексом клеток:
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSDictionary * item = [allItems objectAtIndex:indexPath.row];
NSString * cellTitle = [item objectForKey:@"ItemName"];
...
}
Когда элемент Cliked откроет вашу детальВызычно-контроль и пропустите ссылку на выбранный элемент:
-(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];
}
Чтобы показать все свойства элемента подробному контроллеру.
Корзина NSMutabledIctionSAry Nsmutabledassies. Каждая клавиша элемента Backet - это недвижимость элемента, уникально среди всех элементов, например «ItemName». Каждая позиция элемента фона должна содержать ссылку на элемент в оригинальном массиве. В 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"]];
}
При открытой деталиViewController Проверьте, если корзина уже содержит элемент барника:
if ([self.basket objectForKey:[item objectForKey:@"ItemName"])
И если это так, показать, что элемент изумления уже добавлен в корзину, и предоставить возможность удалить его или изменять количество.