我正在iPad上实施购物车项目。
我有一个" productItem"
#import <Foundation/Foundation.h>
@interface ProductItem : NSObject
+(instancetype)createProductId:(NSString *)aId description:(NSString *)aDesc price:(int)aPrice;
@property(nonatomic, copy)NSString *productId;
@property(nonatomic, copy)NSString *description;
@property(nonatomic)int price;
@end
一个班级&#34; CartItem&#34;
@interface CartItem:NSObject
@property(非原子,弱)ProductItem * prodItem; @property(nonatomic)int quantity;
+(instancetype)createProdItem:(posProductItem *)aProdItem数量:(int)aQuantity;
@end
我有另一个班级&#34; ProductStore&#34;。该类有2个NSMUtableAray,用于存储productItems和cartItems:
@property(nonatomic)NSMutableArray *productItems;
@property(nonatomic)NSMutableArray *cartItems;
我实现了2个ViewControllers,productSearchViewController和cartViewController。 cartViewController基本上显示了cartItems中的元素。
productSearchViewController的功能描述如下:
productSearchViewController
产品显示在UICollectionView中。从Web服务检索的ProductItem填充到ProductStore NSMutableArray&#34; productItems&#34;
[CartItem createProdItem:aProdItem数量:1]; //这里aProdItem是ProductItem *
(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString*)searchText
来查询Web服务的数据。对于每次搜索,我都会清除NSMutableArray&#34; productItems&#34;并使用来自Web服务的数据重新填充它因为我清除了UIMutableArray&#34; productItems&#34;,NSMutableArray中的productItem&#34; cartItems&#34;也被删除了。 cartItem元素仍然存在,但每个cartItem元素中的productItem为空:产品ID,描述和价格为空。
我该如何解决这个问题?将产品添加到购物车时,我应该将ProductItem对象复制到CartItems吗?
答案 0 :(得分:1)
prodItem
设置为nil
,因为您已在weak
的{{1}}中将其声明为CartItem
属性:
@property(nonatomic,weak)ProductItem *prodItem;
如果您需要在strong
类中使用CartItem
属性,则应该使用productItems
属性,即使它已从@property(nonatomic,strong)ProductItem *prodItem;
数组中删除。
{{1}}
虽然这可以解决您的问题,但清除productItems并保留cartItems实际上没有多大意义。